Shivaram Lingamneni
6ccd4e2313
ensure always-on state is flushed
...
* Fix a race condition in persisting channel memberships for always-on
clients (the asynchronous write of the client's channel memberships
could precede the update to the channel's member list, resulting in
the membership not being observed and written)
* Ensure always-on state is flushed on shutdown (we were already
flushing timestamps, because those writes are heavily debounced, but
we were relying on immediate asynchronous writeback for channel
memberships and similar state).
2026-05-08 04:25:09 +00:00
Shivaram Lingamneni
899ec1e2d4
fix #2393
...
Add the bot tag to echo messages when applicable
2026-04-28 04:56:46 +00:00
Shivaram Lingamneni
49192e6fa5
add /v1/whois to API ( #2387 )
2026-04-20 00:58:29 -04:00
Shivaram Lingamneni
9556e5c025
add support for draft/chathistory-end tag ( #2379 )
2026-04-13 22:50:24 -04:00
Shivaram Lingamneni
b120806fd5
fix #2345 ( #2346 )
...
Nil dereference from CS DEOP and EXTJWT; no security implications
2026-03-01 12:45:21 -05:00
Shivaram Lingamneni
2152000312
use correct name for RPL_INVEXLIST ( #2326 )
...
Rename the constants only; no functional change
2026-01-11 02:27:37 -05:00
Shivaram Lingamneni
9f54ea07b7
prep for alternative history databases ( #2316 )
...
* abstract history DB interface
* make mysql error logging consistent
Consistently propagate database errors to the client, making the client
responsible for logging them.
* move ListCorrespondents from Sequence to Database/Buffer
2025-12-30 23:12:30 -05:00
Shivaram Lingamneni
3b7db7fff7
round 1 of follow-up for metadata ( #2277 )
...
* refactoring
* send an empty batch if necessary, as per spec
* don't broadcast no-op updates
* don't trim spaces before validating the key
* bump irctest to cover metadata
* replay existing metadata to reattaching always-on clients
* use canonicalized name everywhere
* use utils.SafeErrorParam in FAIL lines
* validate key names for sub
* fix error for METADATA CLEAR
* max-keys is enforced for channels as well
* remove unlimited configurations
* maintain the limit exactly without off-by-one cases
* add final channel registration check
2025-06-18 00:22:49 -04:00
thatcher-gaming
4dcbc48159
metadata-2 ( #2273 )
...
Initial implementation of draft/metadata-2
2025-06-15 04:06:45 -04:00
Shivaram Lingamneni
36e5451aa5
implement draft/webpush ( #2205 )
2025-01-13 21:47:21 -05:00
Shivaram Lingamneni
0b333c7e72
fix truncation check
...
* The message target was not being counted :-(
* The additional character added to the target by STATUSMSG was not counted
2024-06-11 01:42:57 -04:00
Shivaram Lingamneni
f96f918ff1
fix #2144
...
RPL_NAMREPLY should send = for normal channels and @ for secret channels,
as per Modern docs.
2024-04-13 21:51:59 -04:00
Shivaram Lingamneni
8d082865da
fix #2133 ( #2137 )
...
* fix #2133
Don't record NICK and QUIT in history for invisible auditorium members
2024-03-17 11:42:39 -04:00
Shivaram Lingamneni
dfe2a21b17
add panic handler to async client/channel writes
...
See #2113 for motivation
2024-01-05 00:18:46 -05:00
Shivaram Lingamneni
4aa1aa371d
fix #2113
...
Persisting always-on clients was panicking if client X believed it was
a member of channel Y, but channel Y didn't have a record of client X.
2024-01-03 10:52:34 -05:00
Shivaram Lingamneni
f07707dfbc
Merge pull request #2083 from slingamn/nonames.2
...
implement draft/no-implicit-names
2023-08-16 08:47:05 -07:00
Shivaram Lingamneni
f77d430d25
use maps.Clone from go1.21
2023-08-15 20:57:52 -04:00
Shivaram Lingamneni
3f74612e2b
implement draft/no-implicit-names
2023-08-15 20:29:57 -04:00
Shivaram Lingamneni
ad3ad97047
upgrade to irc-go v0.4.0
2023-06-14 02:46:14 -04:00
Shivaram Lingamneni
f100c1d0fa
fix incorrect chathistory batch types
...
This was introduced in 38a6d17ee5ce6e1096c3dfd6d11f6f35d9a71ca6
2023-06-02 06:56:45 -04:00
Shivaram Lingamneni
38a6d17ee5
clean up nested batch logic
2023-06-01 06:29:22 -04:00
Shivaram Lingamneni
e84793d7ee
fix #2063
...
In #2058 we introduced two bugs:
* A nil dereference when an outside user attempts to speak
* Ordinary copy of a modes.ModeSet (which should only be accessed via atomics)
This fixes both issues.
2023-05-22 12:29:55 -04:00
Shivaram Lingamneni
eeec481b8d
tweaks to NAMES implementation ( #2058 )
...
* tweaks to NAMES implementation
* tweak member caching
* add a benchmark for NAMES
2023-04-14 02:15:56 -04:00
Shivaram Lingamneni
7ce0636276
refactor of channel persistence to use UUIDs
2023-01-04 05:06:21 -05:00
Shivaram Lingamneni
746309e386
replace some utils.Semaphore with (*sync.Mutex).TryLock
...
See #1994
2022-09-02 04:25:39 -04:00
Shivaram Lingamneni
32f7868bfd
implement draft/read-marker capability
2022-03-30 23:16:09 -04:00
Shivaram Lingamneni
a549827f17
upgrade to go 1.18, use generics
2022-03-30 00:44:51 -04:00
Shivaram Lingamneni
eb477c3793
fix #1901
...
AMODE +v should allow you to join a +i channel
2022-01-19 00:54:03 -05:00
Shivaram Lingamneni
e15c355f18
fix #1876
...
INVITE did not exempt from +b unless the channel was coincidentally also +i.
This was a regression introduced in v2.4.0.
2021-12-19 18:30:18 -05:00
Shivaram Lingamneni
ec4fb90d2b
+I should allow unregistered users to join a +R channel
...
See #1858 : this was the intent all along, but I missed this issue.
2021-12-15 22:52:11 -05:00
Shivaram Lingamneni
8be8f0f08d
fix #1858
...
The channel mode +R used to both prevent joins by unregistered users,
and prevent unregistered users who happened to be joined from speaking.
This changes the behavior so that +R only prevents joins:
1. This allows users who were invited or SAJOIN'ed to speak
2. To restore the old semantics, chanops can set +RM
2021-12-07 01:31:07 -05:00
Shivaram Lingamneni
4749d7e776
fix #1676 , take 2
...
Ensure the pagination window is full by making sure that every history item
gets a replay line in CHATHISTORY output, even TAGMSG.
2021-11-01 04:34:59 -04:00
Shivaram Lingamneni
3ec5ffa340
Revert "fix #1676 "
...
This reverts commit 5bbee02fe6bb8ed9dea23675df4349604c5fe247.
2021-11-01 04:34:59 -04:00
Shivaram Lingamneni
5bbee02fe6
fix #1676
...
Fix various pagination issues with CHATHISTORY; also undo #491
(msgid munging).
2021-10-29 04:50:24 -04:00
Alex Jaspersen
ff3f959d52
Allow +v users to talk in +R channels.
2021-06-28 17:27:50 -07:00
Shivaram Lingamneni
99b9312847
fix #1696
2021-06-18 18:26:45 -04:00
Shivaram Lingamneni
4910aefa37
use ergochat/irc-go instead of goshuirc/irc-go
2021-06-18 02:43:25 -04:00
Shivaram Lingamneni
23c7218bf1
first pass at renaming Oragono to Ergo
2021-05-26 15:55:24 -04:00
Shivaram Lingamneni
ba21987d03
remove draft/resume-0.5
2021-05-18 23:27:46 -04:00
Shivaram Lingamneni
a131507090
fix #1642
...
Fix auditorium JOIN lines with zero values for the time and msgid tags.
2021-05-05 10:00:19 -04:00
Shivaram Lingamneni
da216fc699
fix #1577
...
Remove debugging loglines for truncation
2021-04-19 07:06:49 -04:00
Shivaram Lingamneni
f0796b2eb5
Merge pull request #1607 from slingamn/semaphore_update
...
simplify semaphore release code
2021-04-07 08:56:53 -04:00
Shivaram Lingamneni
5b33cd436f
remove unnecessary indirection in semaphore
2021-04-07 08:44:17 -04:00
Shivaram Lingamneni
4052cd12fe
fix #1592
...
Implements the new `CHATHISTORY LISTCORRESPONDENTS` API.
2021-04-06 00:46:07 -04:00
Shivaram Lingamneni
e447c61c73
fix #1596
...
All truncation must be made UTF8-safe.
2021-03-18 03:49:12 -04:00
Shivaram Lingamneni
88b877fce4
ensure IsBot gets propagated into history
2021-03-17 19:01:38 -04:00
Shivaram Lingamneni
1efde964e1
Fix #1562
...
Implement the new bot mode spec:
https://github.com/ircv3/ircv3-specifications/pull/439
2021-03-17 14:36:52 -04:00
Shivaram Lingamneni
fe8e6551c3
fix #1502
...
RELAYMSG should respect mutes
2021-03-11 01:21:03 -05:00
Shivaram Lingamneni
03185ea4a9
deprecate message truncation
...
Implements #1577 , but the issue should remain open until we clean up
the debugging loglines.
2021-03-04 22:29:34 -05:00
Shivaram Lingamneni
42316bc04f
fix #1176
...
Transition most "is an operator" checks to require a specific operator
capability
2021-02-09 22:07:06 -05:00