Shivaram Lingamneni
501bb1e5c5
replay JOIN/PART/QUIT/KICK as PRIVMSG from HistServ
see https://github.com/ircv3/ircv3-specifications/issues/293
5 vuotta sitten
Shivaram Lingamneni
3cd3601a30
refactor join/part
5 vuotta sitten
Shivaram Lingamneni
c2b2559ab4
avoid some uses of Sprintf for loglines
5 vuotta sitten
Shivaram Lingamneni
7c36ec3f9d
allow auto-ops (halfop and higher) to bypass channel join restrictions
5 vuotta sitten
Shivaram Lingamneni
b34bab16a7
ensure that identical PRIVMSG share a time tag
5 vuotta sitten
Shivaram Lingamneni
2c7c8fbaf9
history replay enhancements
5 vuotta sitten
Shivaram Lingamneni
f58c873f84
fix RPL_INVITING response to match modern ircdocs
5 vuotta sitten
Shivaram Lingamneni
b6b4d365bc
fix #313
5 vuotta sitten
Shivaram Lingamneni
a0bf548fc5
draft/resume-0.2 implementation, message history support
5 vuotta sitten
Shivaram Lingamneni
a18283e2de
fix a crash when SAMODE'ing in a channel you're not joined to
5 vuotta sitten
Shivaram Lingamneni
1383190249
refactor rehash to rely more on server.config
6 vuotta sitten
Shivaram Lingamneni
31f386f5a9
add CHANSERV UNREGISTER
6 vuotta sitten
Shivaram Lingamneni
495705f538
implement SAJOIN, allow channel founders to join unconditionally
6 vuotta sitten
Shivaram Lingamneni
1016f86f70
implement CHANSERV AMODE
6 vuotta sitten
Shivaram Lingamneni
6533893863
optimized implementation of Channel.Names()
6 vuotta sitten
Shivaram Lingamneni
b97ae00fe3
refactor channel join and part
6 vuotta sitten
Shivaram Lingamneni
abbbd2c899
review fix
6 vuotta sitten
Shivaram Lingamneni
fad2475c3f
modes refactor, #255
6 vuotta sitten
Shivaram Lingamneni
8fb5a38851
Updates to channel persistence
1. Implement persistent channel keys (#208 )
2. Persist changes to registered channel modes
3. Backend changes for persisting operator status (partial #198 )
6 vuotta sitten
Shivaram Lingamneni
ef99bc48d1
fix #204
Empty channels were only cleaned up on PART, not QUIT.
6 vuotta sitten
Shivaram Lingamneni
ad73d68807
refactor account registration, add nick enforcement
6 vuotta sitten
Daniel Oaks
a70cc6713c
(hopefully) fix labeled-response behaviour
6 vuotta sitten
Daniel Oaks
e0fa97d344
Get labeled-reply working just fine
6 vuotta sitten
Daniel Oaks
2419f69879
Move all errors into errors.go
6 vuotta sitten
Daniel Oaks
3634d0601e
Split modes into a subpackage (this is painful, but will force us to simplify and improve the API for interacting with modes)
6 vuotta sitten
Daniel Oaks
275227a461
Make like every client-facing string translatable
6 vuotta sitten
Daniel Oaks
f8b39cfe61
Send fake channel joins on RESUME
6 vuotta sitten
Shivaram Lingamneni
52b0fb71e7
refactor ClientManager
6 vuotta sitten
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.
6 vuotta sitten
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`.
6 vuotta sitten
Shivaram Lingamneni
9b74c47b74
rename some getters
Rename getters in conformance with the "Effective Go" styleguide recommendation:
https://golang.org/doc/effective_go.html#Getters
6 vuotta sitten
Shivaram Lingamneni
94cf438f51
remove channelJoinPartMutex
6 vuotta sitten
Shivaram Lingamneni
fa83ccd82b
refactor synchronization for Channel
6 vuotta sitten
Daniel Oaks
b8d47c3e4f
channel: Server opers shouldn't override nooutside, reggedonly and moderated modes. if they want to do that sort of thing, they have SAMODE and all to be explicit about it
6 vuotta sitten
Daniel Oaks
e3a0387cf5
channel: Fix +m (moderated) and +R (registeredonly) channel modes, add note about opers overriding +m/+R
6 vuotta sitten
Daniel Oaks
275449e6cc
caps: Move most capability-handling types into the caps package
6 vuotta sitten
Daniel Oaks
9bfdc4fdfb
Move caps to their own package to prevent conflicts
6 vuotta sitten
Shivaram Lingamneni
e8b1870067
refactor the rehash implementation
6 vuotta sitten
Daniel Oaks
79de443496
channel: Don't send TOPIC on entirely new channel
6 vuotta sitten
Daniel Oaks
3b0d9c4db9
Send nick parameter correctly on ERR_NOSUCHNICK numerics
6 vuotta sitten
Shivaram Lingamneni
333afe1062
make default channel modes configurable
6 vuotta sitten
Daniel Oaks
c9ed749538
Rename deps
7 vuotta sitten
Daniel Oaks
9a94121281
JOIN: Fix a dumb bug. Really dumb bug.
7 vuotta sitten
Daniel Oaks
22216d4d60
Fix lots of nits
7 vuotta sitten
Daniel Oaks
0046025d60
Enable chanmode +r, fix bug with registering channels
7 vuotta sitten
Daniel Oaks
317a804644
Fix dates at top of source files
7 vuotta sitten
Daniel Oaks
013635a827
channel: Give founder mode if channel already exists and founder joins
7 vuotta sitten
Daniel Oaks
6aebd4aad9
channel: Add comments, fix a small bug with moderated mode
7 vuotta sitten
Daniel Oaks
300d02bd9c
channel: Kill a race condition that locked up the server.
Specifically, if you joined a channel while someone else was trying to part. the Join method would grab the lock, the Quit method would queue to grab the lock, the Join method would unlock and then try to regrab the lock, and it would get into a situation where nobody would have the lock and everyone would be waiting for it.
This caused weird oddities with clients.
7 vuotta sitten
Daniel Oaks
861b65eb39
channels: Automagically save channel bans/excepts/invites
7 vuotta sitten