The IRC listener drops lines and mode parameters, and accepts any channel name #127

Closed
opened 2026-10-08 10:31:19 +02:00 by clawbot · 2 comments
Collaborator

The IRC listener relays some messages from HTTP API users wrongly, and accepts channel names the HTTP API refuses. Found by the README review at #120 (comment):

  • An IRC listener user receives only the first line of a multi-line body.
  • A +k, +l or +b change made over the HTTP API reaches IRC listener members without its key, limit or mask.
  • The IRC listener's JOIN accepts any channel name; over the HTTP API a name that is not # followed by 1 to 63 letters, digits, _ or - gets 403.

Definition of done

  1. Each line of a multi-line body reaches an IRC listener user as its own PRIVMSG or NOTICE line.
  2. Mode changes made over the HTTP API reach IRC listener members with their parameters, as an IRC client sending the same change would see them.
  3. The IRC listener's JOIN validates channel names with the same service code as the HTTP API and refuses an invalid one with 403.
  4. Tests for each in internal/ircserver; README.md's IRC listener section matches.
  5. One reviewed PR against next.

Model: opus-5-5

The IRC listener relays some messages from HTTP API users wrongly, and accepts channel names the HTTP API refuses. Found by the README review at https://git.eeqj.de/sneak/neoirc/pulls/120#issuecomment-133596: - An IRC listener user receives only the first line of a multi-line `body`. - A `+k`, `+l` or `+b` change made over the HTTP API reaches IRC listener members without its key, limit or mask. - The IRC listener's `JOIN` accepts any channel name; over the HTTP API a name that is not `#` followed by 1 to 63 letters, digits, `_` or `-` gets 403. ## Definition of done 1. Each line of a multi-line `body` reaches an IRC listener user as its own `PRIVMSG` or `NOTICE` line. 2. Mode changes made over the HTTP API reach IRC listener members with their parameters, as an IRC client sending the same change would see them. 3. The IRC listener's `JOIN` validates channel names with the same service code as the HTTP API and refuses an invalid one with 403. 4. Tests for each in `internal/ircserver`; `README.md`'s IRC listener section matches. 5. One reviewed PR against `next`. Model: opus-5-5
clawbot self-assigned this 2026-10-08 10:31:19 +02:00
Author
Collaborator

Plan: one PR against next meeting the definition of done as written. Each line of a multi-line body goes to IRC listener users as its own PRIVMSG or NOTICE; mode changes made over the HTTP API reach IRC listener members with their key, limit or mask; the IRC listener's JOIN checks channel names with the same service code as the HTTP API and refuses a bad one with 403. Tests in internal/ircserver; README.md updated. #122 and #128 change the same files and follow this one.

Model: opus-5-5

Plan: one PR against `next` meeting the definition of done as written. Each line of a multi-line `body` goes to IRC listener users as its own `PRIVMSG` or `NOTICE`; mode changes made over the HTTP API reach IRC listener members with their key, limit or mask; the IRC listener's `JOIN` checks channel names with the same service code as the HTTP API and refuses a bad one with 403. Tests in `internal/ircserver`; `README.md` updated. https://git.eeqj.de/sneak/neoirc/issues/122 and https://git.eeqj.de/sneak/neoirc/issues/128 change the same files and follow this one. Model: opus-5-5
Author
Collaborator

Built in #135, as the plan above describes. One addition: an IRC listener user who makes a MODE change now also gets it back as separate parameters (+o bob rather than :+o bob), so the echo matches what the other members get.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/neoirc/pulls/135, as the plan above describes. One addition: an IRC listener user who makes a `MODE` change now also gets it back as separate parameters (`+o bob` rather than `:+o bob`), so the echo matches what the other members get. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/neoirc#127