summaryrefslogtreecommitdiff
path: root/bounce.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Advertise znc.in/self-messageJune McEnroe2023-08-091-0/+1
| | | | | | | https://defs.ircdocs.horse/info/selfmessages.html This fixes private message routing in Textual, as it only has correct behaviour if it sees this CAP.
* Implement draft/read-markerJune McEnroe2023-07-161-0/+10
|
* Add support for extended-monitorJune McEnroe2023-07-161-0/+1
| | | | | Doesn't need any new filtering since the actual messages added by extended-monitor are gated by other caps which already have filtering.
* Set msg.cmd to NULL if it is empty stringJune McEnroe2023-02-071-0/+1
| | | | This fixes allowing empty lines from clients during registration.
* Fix segfault parsing line with only tagsJune McEnroe2023-02-071-2/+2
|
* Allow quitting pounce from clientsJune McEnroe2022-04-031-0/+1
|
* Rename client->error to client->removeJune McEnroe2022-03-291-1/+1
|
* Track account name from 900 numericJune McEnroe2022-03-291-0/+1
|
* Replace ORIGIN #define with clientOrigin variableJune McEnroe2022-03-291-2/+2
|
* Refactor XDG base directory iterator APIC. McEnroe2021-10-051-2/+2
| | | | Finally something more reasonable for call sites.
* Load and reload local certificates like normalC. McEnroe2021-10-051-9/+3
|
* Remove certbot default pathsC. McEnroe2021-10-051-4/+0
|
* Track client idle timeC. McEnroe2021-10-031-0/+1
| | | | Bumped on both send and receive.
* Log IRC to standard output with -vC. McEnroe2021-10-021-0/+7
| | | | | So that it can actually be logged to a file separate from any errors or status messages. Also make sure only LF is used when logging.
* Be nice and call tls_close(3) on the serverC. McEnroe2021-09-021-0/+1
|
* Remove redundant clientDiff functionC. McEnroe2021-09-021-1/+0
|
* Avoid overwriting manual AWAY messagesC. McEnroe2021-08-211-0/+1
| | | | | | Setting an AWAY message then disconnecting will no longer replace the AWAY message with the default one. Reconnecting continues to always clear AWAY.
* Use seprintf for capListC. McEnroe2021-06-091-8/+6
|
* Add seprintfC. McEnroe2021-06-091-0/+13
| | | | | | | | | Based on seprint(2) from Plan 9. I'm not sure if my return value exactly matches Plan 9's in the case of truncation. seprint(2) is described only as returning a pointer to the terminating '\0', but if it does so even in the case of truncation, it is awkward for the caller to detect. This implementation returns end in the truncation case, so that (ptr == end) indicates truncation.
* Support echo-message capabilityC. McEnroe2021-01-241-0/+1
| | | | | | | Only request it with labeled-response, since it is impossible to correlate messages to clients without. For clients without echo-message, synthesize a label on PRIVMSG/NOTICE/TAGMSG, then filter out received messages with that label.
* Add -o and -t options to trust self-signed certificatesC. McEnroe2021-01-111-1/+4
|
* Add lazy client registration timeoutC. McEnroe2020-11-201-0/+1
| | | | | | I don't think this is worth adding a configuration option for since real clients will definitely accomplish registration faster than 10s and it's long enough to even type out manually for testing.
* Set client sockets non-blockingC. McEnroe2020-11-161-1/+2
| | | | | | | | | | | | | | | | | | | | | Except for during writes. This prevents pounce getting blocked on a client sending only a partial TLS record, for example. Writes still need to block because pounce doesn't have a way to resume them. (And it would do so by having a buffer, but sockets already have a send buffer, so what would be the point of that?) I don't think it should be a problem since outside of stateSync, writes only happen when poll returns POLLOUT. I feel like ideally SO_SNDLOWAT would be set to guarantee a full IRC message can always be written on POLLOUT, but since it's actually TLS records being sent, it's not obvious what the size would be. I'm also making an assumption here that tls_read returning TLS_WANT_POLLOUT is unlikely to happen, since I don't actually set pollfd.events based on that. I'm not sure how wanting to resume a tls_read after a POLLOUT could be cleanly handled. I'm just going to hope that if it does happen, the regular poll loop will eventually sort it out...
* Swap localAccept parameter orderC. McEnroe2020-11-141-1/+1
|
* Make struct Client publicC. McEnroe2020-11-141-1/+17
|
* Refactor certificate loading and load all certs from config pathsC. McEnroe2020-08-281-0/+9
|
* Import xdg.c from catgirlC. McEnroe2020-08-241-0/+5
|
* Implement stub of palaverapp.com capabilityC. McEnroe2020-08-111-0/+1
| | | | | | This needs to be documented! But the documentation won't make any sense until there's something that can implement the actual functionality of the capability.
* Refactor clientCA and clientSTS as clientCapsC. McEnroe2020-08-101-2/+1
|
* Say "OpenSSL" in additional permission noticesC. McEnroe2020-08-061-2/+2
| | | | LibreSSL is "a modified version of that library".
* Remove compat.hC. McEnroe2020-08-011-2/+0
|
* Use snprintf instead of strlcatC. McEnroe2020-08-011-6/+9
|
* Rewrite configure script for all platformsC. McEnroe2020-07-241-1/+1
|
* Add -R blind-req optionC. McEnroe2020-07-061-1/+1
| | | | | Allows requesting userhost-in-names on freenode, which is available but hidden.
* Add additional permission for linking with LibreSSLC. McEnroe2020-06-081-0/+11
| | | | https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs
* Add server send queueing with time intervalC. McEnroe2020-05-111-0/+4
| | | | | | | | | This addresses pounce getting killed with "Excess flood" when it sends NAMES commands for too many channels when a client connects. These commands, as well as automatic AWAY commands, are by default throttled to 5 per second. Tested on freenode with 36 channels and 200ms interval.
* Replace .mk files with configure scriptC. McEnroe2020-03-011-2/+2
| | | | Copied and expanded from catgirl.
* Advertise STS policyC. McEnroe2020-02-271-0/+2
| | | | | Duration is set to INT_MAX since pounce will never accept cleartext connections.
* Set consumer pos with CAP REQ causal.agency/consumer=nC. McEnroe2020-02-271-0/+1
| | | | | So the spec doesn't say I can use cap values in CAP REQ. But it also doesn't explicitly say I can't.
* Add causal.agency/consumer capabilityC. McEnroe2020-02-271-0/+3
|
* Send CAP LS 302 to the serverC. McEnroe2020-02-271-3/+4
|
* Support CAP LS 302 from clientsC. McEnroe2020-02-271-2/+8
|
* Support cap-notifyC. McEnroe2020-02-271-0/+1
|
* Support setnameC. McEnroe2020-02-261-0/+1
|
* Support labeled-responseC. McEnroe2020-02-261-1/+6
|
* Support batchC. McEnroe2020-02-261-1/+2
|
* Support account-tagC. McEnroe2020-02-261-1/+2
|
* Support message-tagsC. McEnroe2020-02-251-1/+2
|
* Request server-time from the server and filter tags for clientsC. McEnroe2020-02-251-0/+3
| | | | | | | | This doesn't yet, but it will break the "robustness principle" according to which a server "SHOULD NOT" assume that a client capable of parsing one tag is capable of parsing all tags. In future, TagCaps will have all other caps that use tags ORed into it, and only if the client supports none of them will tags be filtered out.
* Bump buffer sizes to allow for tagsC. McEnroe2020-02-251-0/+2
| | | | | I still think this limit is unreasonably large in comparison to 512 for the actual message.