Shivaram Lingamneni
74afeaed55
tweaks to NAMES / WHO privacy
5 yıl önce
Shivaram Lingamneni
51465b4a3a
strip out the +a away mode
5 yıl önce
Shivaram Lingamneni
d6c970f521
names should respect invisibility
5 yıl önce
Shivaram Lingamneni
30f6e11698
fix #400
Also fix some issues with STATUSMSG
5 yıl önce
Shivaram Lingamneni
97e71dfef7
extract Semaphore to utils package
5 yıl önce
Shivaram Lingamneni
c2faeed4b5
initial implementation of bouncer functionality
5 yıl önce
Shivaram Lingamneni
18a8b075ea
fix #425 and #395
5 yıl önce
Shivaram Lingamneni
63029e2ff5
refactor channel registration
5 yıl önce
Shivaram Lingamneni
85493ef031
upgrade message-tags to non-draft version
5 yıl önce
Daniel Oaks
6d109e92a5
Fix dodgy TL strings to make them easier to translate
5 yıl önce
Shivaram Lingamneni
a5b9634783
fix #394
5 yıl önce
Shivaram Lingamneni
344a1d7e48
fix #392
5 yıl önce
Shivaram Lingamneni
b7ec121c19
fix some KICK issues
reported by bogdomania
1. KICK without privileges incorrectly returned ERR_CANNOTSENDTOCHAN
2. Halfops should be able to kick voice and unprivileged, but not other halfops
5 yıl önce
Shivaram Lingamneni
4c7a5585db
fix #371
5 yıl önce
Shivaram Lingamneni
e4c9351254
fix: set the existing channels unregistered
5 yıl önce
Shivaram Lingamneni
20b8ba8cae
don't send the client its own on-join MODE line
Fixes #353 .
5 yıl önce
Shivaram Lingamneni
f6b3008f8f
add CHATHISTORY and HISTORY implementations
5 yıl önce
Shivaram Lingamneni
501bb1e5c5
replay JOIN/PART/QUIT/KICK as PRIVMSG from HistServ
see https://github.com/ircv3/ircv3-specifications/issues/293
5 yıl önce
Shivaram Lingamneni
3cd3601a30
refactor join/part
5 yıl önce
Shivaram Lingamneni
c2b2559ab4
avoid some uses of Sprintf for loglines
5 yıl önce
Shivaram Lingamneni
7c36ec3f9d
allow auto-ops (halfop and higher) to bypass channel join restrictions
5 yıl önce
Shivaram Lingamneni
b34bab16a7
ensure that identical PRIVMSG share a time tag
5 yıl önce
Shivaram Lingamneni
2c7c8fbaf9
history replay enhancements
5 yıl önce
Shivaram Lingamneni
f58c873f84
fix RPL_INVITING response to match modern ircdocs
5 yıl önce
Shivaram Lingamneni
b6b4d365bc
fix #313
5 yıl önce
Shivaram Lingamneni
a0bf548fc5
draft/resume-0.2 implementation, message history support
5 yıl önce
Shivaram Lingamneni
a18283e2de
fix a crash when SAMODE'ing in a channel you're not joined to
6 yıl önce
Shivaram Lingamneni
1383190249
refactor rehash to rely more on server.config
6 yıl önce
Shivaram Lingamneni
31f386f5a9
add CHANSERV UNREGISTER
6 yıl önce
Shivaram Lingamneni
495705f538
implement SAJOIN, allow channel founders to join unconditionally
6 yıl önce
Shivaram Lingamneni
1016f86f70
implement CHANSERV AMODE
6 yıl önce
Shivaram Lingamneni
6533893863
optimized implementation of Channel.Names()
6 yıl önce
Shivaram Lingamneni
b97ae00fe3
refactor channel join and part
6 yıl önce
Shivaram Lingamneni
abbbd2c899
review fix
6 yıl önce
Shivaram Lingamneni
fad2475c3f
modes refactor, #255
6 yıl önce
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 yıl önce
Shivaram Lingamneni
ef99bc48d1
fix #204
Empty channels were only cleaned up on PART, not QUIT.
6 yıl önce
Shivaram Lingamneni
ad73d68807
refactor account registration, add nick enforcement
6 yıl önce
Daniel Oaks
a70cc6713c
(hopefully) fix labeled-response behaviour
6 yıl önce
Daniel Oaks
e0fa97d344
Get labeled-reply working just fine
6 yıl önce
Daniel Oaks
2419f69879
Move all errors into errors.go
6 yıl önce
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 yıl önce
Daniel Oaks
275227a461
Make like every client-facing string translatable
6 yıl önce
Daniel Oaks
f8b39cfe61
Send fake channel joins on RESUME
6 yıl önce
Shivaram Lingamneni
52b0fb71e7
refactor ClientManager
6 yıl önce
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 yıl önce
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 yıl önce
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 yıl önce
Shivaram Lingamneni
94cf438f51
remove channelJoinPartMutex
6 yıl önce
Shivaram Lingamneni
fa83ccd82b
refactor synchronization for Channel
6 yıl önce