3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-12-23 19:22:41 +01:00
Commit Graph

1047 Commits

Author SHA1 Message Date
Daniel Oaks
b2e5738f08
Merge pull request #171 from slingamn/atime
fix a race condition in client timeouts
2017-12-03 12:59:08 +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
Daniel Oaks
ad351268be
Merge pull request #168 from slingamn/clientmanager
refactor ClientManager
2017-11-23 08:35:50 +10: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
2cbbec567c Don't override package name 2017-11-19 10:42:40 +10: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
Daniel Oaks
bec050208d
Merge pull request #166 from slingamn/banlist.3
allow non-operators to list bans
2017-11-17 16:09:21 +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
Daniel Oaks
a33e83de9e
Merge pull request #165 from slingamn/get_fail
fix a wide-ranging assortment of crash bugs
2017-11-13 22:43:24 +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
075a38d08d developing: Add new release instructions. 2017-11-13 12:45:28 +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
Daniel Oaks
44538c3b0b
Merge pull request #162 from slingamn/modeperms
fix channel mode change privilege enforcement
2017-11-09 14:56:53 +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
d5832bf765
Merge pull request #160 from slingamn/cache.4
fix a race in regenerateMembersCache
2017-11-08 22:18:25 -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
Daniel Oaks
f9d8d1a4f9
Merge pull request #158 from slingamn/renames
rename some getters
2017-11-03 08:02:12 +00: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
Shivaram Lingamneni
94cf438f51 remove channelJoinPartMutex 2017-10-30 05:21:47 -04:00
Daniel Oaks
d715abf0f0 Add the INFO command 2017-10-29 07:59:56 +00:00
Daniel Oaks
33651ea03c vendor: Updated submodules 2017-10-29 05:05:15 +00:00
Daniel Oaks
384e6e1720 client: Fix crash from not having right line lengths computed 2017-10-29 05:04:32 +00:00
Daniel Oaks
c6b6a25906 Merge remote-tracking branch 'slingmann/recovery' 2017-10-29 04:37:57 +00:00
Daniel Oaks
c09ca729c4 Merge remote-tracking branch 'slingmann/membersmutex.2' 2017-10-29 04:36:42 +00:00
Daniel Oaks
03978c6b85 Setup 0.10.1-unreleased devel ver 2017-10-29 04:35:15 +00:00
Shivaram Lingamneni
6130e48a67 always log the panic trace 2017-10-26 05:15:55 -04:00
Shivaram Lingamneni
7b58bf76ef make error recovery configurable 2017-10-26 04:19:01 -04:00
Shivaram Lingamneni
80968d000f log panic traces via the usual logging mechanism 2017-10-25 13:22:02 -04:00
Shivaram Lingamneni
054f57e215 recover from client-caused panics 2017-10-23 19:08:32 -04:00
Shivaram Lingamneni
71e82a9ccf move a check, avoiding a crash 2017-10-23 18:01:28 -04:00
Shivaram Lingamneni
240f121e5e bug fix: SAMODE should list other users' modes 2017-10-22 23:07:21 -04:00
Daniel Oaks
fbaf2d8e3a Release v0.10.0 2017-10-23 12:51:42 +10:00
Shivaram Lingamneni
fa83ccd82b refactor synchronization for Channel 2017-10-22 19:50:16 -04:00
Shivaram Lingamneni
c026cc5ab6 review fixes
* move constant definitions
* always give the client at least quitTimeout to respond to ping,
  even if registerTimeout or quitTimeout are longer than idleTimeout
2017-10-15 22:37:36 -04:00
Daniel Oaks
8910dc59ee Fix KLINE quit/error message and corrects comment on Client.Quit 2017-10-16 10:48:05 +10:00
Shivaram Lingamneni
7ccb485b50 add two getters 2017-10-15 19:46:25 -04:00
Shivaram Lingamneni
e540fde816 refactor idle timeouts 2017-10-15 19:46:25 -04:00
Shivaram Lingamneni
b86fc105cd eliminate destroyMutex 2017-10-15 19:46:25 -04:00
Shivaram Lingamneni
545e8d71db eliminate quitMutex 2017-10-15 19:46:25 -04:00