protocols/ircv3/README.md

Thu, 24 Apr 2025 22:19:39 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 24 Apr 2025 22:19:39 -0500
changeset 43242
a9bc19e23c36
parent 42652
225762d4e206
permissions
-rw-r--r--

IRCv3: check if a member is in a conversation before adding them

Awhile ago we update the NAMREPLY handler to build a separate
Purple.ConversationMembers and then splice that onto the existing one to help
with sorting and other performance issues. However, we didn't check if the
users already existed in the existing list, so we would get duplicates. This
address that.

Also fixed a reference leak.

Testing Done:
Joined a channel and sent `/quote names #channel` multiple times and verified that the member list did not grow to include a bunch of duplicates.

Reviewed at https://reviews.imfreedom.org/r/3987/

42041
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 # IRCv3
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 This is a brand new from-scratch protocol plugin which is the first protocol
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 plugin to be 100% code reviewed. It uses regex to tokenize messages.
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 We are intending for it to be subclass-able so other networks like Twitch.tv can
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 be supported but we're not quite there yet.
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 We also are intending to support subclassing in other languages but we've run
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 into some issues with dynamic GObject types and GObject introspection that have
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 slowed us down.
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 ## Capability Support
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 This is a list of capabilities that we currently support. We'll do our best to
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 keep this list up to date, but if you notice we've missed something please let
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 us know!
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18
42055
2f5bbcc91854 IRCv3: Negotiate the message-tags capability and make sure our regex matches the BNF
Gary Kramlich <grim@reaperworld.com>
parents: 42041
diff changeset
19 * cap-notify
42041
b9ef2851fdc0 IRCv3: Add a basic README.md
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * sasl (right now just PLAIN works)
42055
2f5bbcc91854 IRCv3: Negotiate the message-tags capability and make sure our regex matches the BNF
Gary Kramlich <grim@reaperworld.com>
parents: 42041
diff changeset
21 * message-tags
42056
ced07483f66a IRCv3: Add support for the msgid specification
Gary Kramlich <grim@reaperworld.com>
parents: 42055
diff changeset
22 * msgid

mercurial