Daniel Oaks
099fd7c08f
Update translation backend stuff a little more
2018-01-23 17:22:39 +10:00
Daniel Oaks
1a5ff05493
Update translation framework
2018-01-23 16:50:19 +10:00
Daniel Oaks
ddec79f8d0
Update translation framework a touch more
2018-01-23 15:09:47 +10:00
Daniel Oaks
75dcff7183
Update translation framework, add badge to readme
2018-01-23 15:06:55 +10:00
Shivaram Lingamneni
4b1aa2b952
remove unused member ChannelRegistry.channels
2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
7edd9032d3
remove newConns channel
2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
728863a17c
move Commands initialization to an init()
2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
62fc2c0cc3
remove Server.commands
2018-01-22 13:47:57 -05:00
Daniel Oaks
b2afd55285
Don't load example translation file, make example actually list all translatable strings
2018-01-22 22:16:07 +10:00
Daniel Oaks
090095b2b9
Set default client language when creating them
2018-01-22 21:30:28 +10:00
Daniel Oaks
275227a461
Make like every client-facing string translatable
2018-01-22 21:26:01 +10:00
Daniel Oaks
0569b5cfaa
RESUME: Fix a few bugs, play modestrings 'n' all
2018-01-22 20:55:20 +10:00
Daniel Oaks
f8b39cfe61
Send fake channel joins on RESUME
2018-01-22 17:58:10 +10:00
Daniel Oaks
7760634efe
Actually let the takeover work somewhat more properly
2018-01-22 17:57:38 +10:00
Daniel Oaks
0d5327de8a
Fix some issues, add RPL_WHOISACCOUNT
2018-01-22 17:57:38 +10:00
Daniel Oaks
ac99e82192
Fix build issues
2018-01-22 17:57:38 +10:00
Daniel Oaks
d09f085b1a
Add very initial RESUME cap and command
2018-01-22 17:57:38 +10:00
Daniel Oaks
e99f22488f
Make LANGUAGE support work
2018-01-22 17:30:31 +10:00
Daniel Oaks
a7fdade41d
Extend to include example translation stuff
2018-01-21 16:49:17 +10:00
Daniel Oaks
ba77a95c81
Very initial beginning of languages implementation
2018-01-21 16:11:16 +10:00
Daniel Oaks
3b3c1c733a
Support bot mode +B
2018-01-07 12:56:51 +10:00
Daniel Oaks
3ba8af714e
Use base 36 when generating message IDs, gives us full 0-9a-z to use while preserving uniqueness nicely
2018-01-04 00:21:35 +10:00
Daniel Oaks
63bd52d471
Make message IDs much shorter (thanks @prawnsalad!)
2018-01-04 00:13:32 +10:00
Daniel Oaks
713fc59691
CAP: Correctly suspend registration for CAP REQ as per the spec
2017-12-28 13:50:42 +10:00
Daniel Oaks
7c624f9a38
Setup v0.10.4-unreleased devel ver
2017-12-28 13:41:36 +10:00
Daniel Oaks
5e9f0fd411
Release v0.10.3
2017-12-26 12:43:37 +10:00
Daniel Oaks
197ab520bf
Change casemapping name and advertisement to match new spec
2017-12-26 12:30:04 +10:00
Daniel Oaks
36b26f99be
Merge pull request #173 from slingamn/timeouts.3
...
refactor idle timeouts again
2017-12-11 14:53:05 +10:00
Shivaram Lingamneni
d8d1705035
refactor idle timeouts again
2017-12-06 23:23:25 -05:00
Daniel Oaks
e0519a6387
caps: Rename maxline cap
2017-12-06 13:11:38 +10:00
Shivaram Lingamneni
ad1e00629b
fix a race condition in idle timeouts
...
squigz on freenode reported an issue where bots were responding to PING
on time, but were occasionally being timed out regardless. This was a race
condition: timeout was detected as idleTime >= it.quitTimeout, but if
the client responded promptly to its PING message and sent no further messages,
but the main loop subsequently slept for longer than expected (i.e., significantly
longer than quitTimeout), this condition would be met through no fault of the
client's.
The fix here is to explicitly track the last time the ping was sent, then test
!lastSeen.After(lastPinged) instead (making use of time.Time's monotonicity).
It is sufficient that the measurement of lastPinged happens-before the PING is sent.
2017-12-02 20:30:26 -05:00
Shivaram Lingamneni
f5e7ec525d
synchronize accesses to client.atime
2017-12-02 20:05:06 -05:00
Shivaram Lingamneni
b4907dadb9
fix a bug where the uncasefolded nickname wasn't being recorded
...
Also, rename the nickname vars to hopefully make things clearer
2017-11-22 16:56:14 -05:00
Shivaram Lingamneni
d5a5f939dd
review fixes
2017-11-22 16:35:57 -05:00
Shivaram Lingamneni
52b0fb71e7
refactor ClientManager
2017-11-22 05:09:38 -05:00
Daniel Oaks
bfcada11dc
KLINE: Save name of the banning oper
2017-11-19 10:32:32 +10:00
Daniel Oaks
dedb029272
DLINE: Save name of the banning oper
2017-11-19 10:27:40 +10:00
Daniel Oaks
8036df92fc
WHO: Require first param, matching other servers
2017-11-19 10:10:10 +10:00
Shivaram Lingamneni
b83d454554
fix ban regexp not being recompiled on removal
2017-11-13 18:25:51 -05:00
Shivaram Lingamneni
b1e12ca1eb
allow unprivileged users to list bans
2017-11-13 18:25:51 -05:00
Daniel Oaks
fc8007e6e4
Setup v0.10.3-unreleased devel ver
2017-11-13 22:52:48 +10:00
Daniel Oaks
11ea52b0f0
Release v0.10.2
2017-11-13 22:46:50 +10:00
Shivaram Lingamneni
ca8a0b7091
fix a wide-ranging assortment of crash bugs
2017-11-13 02:42:20 -05:00
Daniel Oaks
ff50a25b65
Merge pull request #161 from slingamn/chanreg.3
...
remove registeredChannelsMutex
2017-11-13 12:46:23 +10:00
Daniel Oaks
efb54163a5
Setup v0.10.2-unreleased devel ver
2017-11-13 12:45:10 +10:00
Daniel Oaks
f2d4698baf
Release v0.10.1
2017-11-09 15:07:40 +10:00
Shivaram Lingamneni
6d619bf411
fix channel mode change privilege enforcement
2017-11-08 23:37:38 -05:00
Shivaram Lingamneni
d4cb15354f
remove registeredChannelsMutex
...
This moves channel registration to an eventual consistency model,
where the in-memory datastructures (Channel and ChannelManager)
are the exclusive source of truth, and updates to them get persisted
asynchronously to the DB.
2017-11-08 22:24:33 -05:00
Shivaram Lingamneni
60b861e07e
fix a race in regenerateMembersCache
...
The rationale for why regenerateMembersCache didn't need to hold the Lock()
throughout was subtly wrong. It is true that at least some attempt to
regenerate the cache would see *all* the updates. However, it was possible for
the value of `result` generated by that attempt to lose the race for the final
assignment `channel.membersCache = result`.
The fix is to serialize the attempts to regenerate the cache, without adding
any additional locking on the underlying `Channel` fields via
`Channel.stateMutex`. This ensures that the final read from `Channel.members`
is paired with the final write to `Channel.membersCache`.
2017-11-07 14:38:18 -05:00
Shivaram Lingamneni
9b74c47b74
rename some getters
...
Rename getters in conformance with the "Effective Go" styleguide recommendation:
https://golang.org/doc/effective_go.html#Getters
2017-11-03 02:36:55 -04:00