about summary refs log tree commit diff
path: root/state.c (follow)
Commit message (Collapse)AuthorAge
* Handle 004 RPL_MYINFO with fewer parameters HEAD masterJune McEnroe2024-11-05
| | | | Co-authored-by: Sebastien Marie <semarie@kapouay.eu.org>
* Implement draft/read-markerJune McEnroe2023-07-16
|
* Factor out caps pounce doesn't request from the serverJune McEnroe2023-07-16
|
* Handle servers not sending NUH-origin in NICKJune McEnroe2023-07-03
| | | | | Apparently Unreal does this. Only having :nick in the NICK would confuse the check for self.
* Send 900 as part of stateSyncJune McEnroe2022-03-29
| | | | Sent before 001 since that is normally when you would receive it.
* Track account name from 900 numericJune McEnroe2022-03-29
|
* Replace ORIGIN #define with clientOrigin variableJune McEnroe2022-03-29
|
* Use EX_USAGE for all local configuration errorsJune McEnroe2021-09-05
|
* Separate stateSync intro messagesJune McEnroe2021-08-31
| | | | | So each message can be logged with its prefix. All other calls to clientFormat and serverFormat write one message at a time.
* Correct handling of colons in SASL PLAINJune McEnroe2021-08-30
| | | | Only the first colon should be replaced with a null byte.
* Avoid overwriting manual AWAY messagesJune McEnroe2021-08-21
| | | | | | 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 to build final 005June McEnroe2021-07-08
| | | | Rather than causing a tls_write(3) for each remaining token.
* Stop accumulating ISUPPORT tokens once MOTD startsJune McEnroe2021-06-10
| | | | | This avoids duplicating tokens when a client sends VERSION and the server responds with its 005s again.
* Support echo-message capabilityJune McEnroe2021-01-24
| | | | | | | 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.
* Send CAP END if CAP LS response is emptyJune McEnroe2020-12-21
| | | | | Or only unsupported caps. Or, as the corresponding commit in catgirl says, "if CAP LS doesn't list anything good."
* Handle 437 ERR_UNAVAILRESOURCE like ERR_NICKNAMEINUSEJune McEnroe2020-12-05
| | | | | Not totally clear under what conditions 437 is returned, but if it happens during registration, we should pick a new nick.
* Say "OpenSSL" in additional permission noticesJune McEnroe2020-08-06
| | | | LibreSSL is "a modified version of that library".
* Add -R blind-req optionJune McEnroe2020-07-06
| | | | | Allows requesting userhost-in-names on freenode, which is available but hidden.
* Add additional permission for linking with LibreSSLJune McEnroe2020-06-08
| | | | https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs
* Add server send queueing with time intervalJune McEnroe2020-05-11
| | | | | | | | | 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.
* Send ERR_NOMOTD during syncJune McEnroe2020-03-08
| | | | | Some clients (Revolution) mistakenly believe they are not connected until a MOTD has been received. Sending this is harmless, I guess.
* Advertise STS policyJune McEnroe2020-02-27
| | | | | Duration is set to INT_MAX since pounce will never accept cleartext connections.
* Send CAP LS 302 to the serverJune McEnroe2020-02-27
|
* Support CAP LS 302 from clientsJune McEnroe2020-02-27
|
* Support cap-notifyJune McEnroe2020-02-27
|
* Request server-time from the server and filter tags for clientsJune McEnroe2020-02-25
| | | | | | | | 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.
* Declare globals as extern in headers, and define in source fileMichael Forney2019-11-21
| | | | | | | | | | | | | | | Otherwise, each source file that includes the header gets its own definition, and according to the C standard (C99 6.9p5): > If an identifier declared with external linkage is used in an > expression (other than as part of the operand of a sizeof operator > whose result is an integer constant), somewhere in the entire > program there shall be exactly one external definition for the > identifier Most compilers use the .bss section for zero data, but if it uses .data instead, or if -Wl,--warn-common is used, this will cause a linking error.
* Zero temporary SASL PLAIN bufferJune McEnroe2019-11-21
|
* Use a static buffer for plainBase64June McEnroe2019-11-21
|
* Use a fixed buffer size for SASL PLAIN authenticationMichael Forney2019-11-21
| | | | | | | handleAuthenticate only sends a single AUTHENTICATE message, so according to https://ircv3.net/specs/extensions/sasl-3.1.html, its maximum length is 399. So, we know that the authentication string can be at most 299 bytes.
* Request NAMES on sync by defaultJune McEnroe2019-11-15
| | | | This inverts the meaning of -N!
* Filter invite-notifyJune McEnroe2019-11-10
|
* Request all supported caps from serverJune McEnroe2019-11-10
|
* Maintain stateCaps and offer them to clientsJune McEnroe2019-11-09
|
* Use #defines for constant stringsJune McEnroe2019-11-06
| | | | | GCC hates declaring static consts in headers and not using them, for some stupid reason.
* Change license to GPLv3June McEnroe2019-11-06
| | | | | | | | | | | | | | > Notwithstanding any other provision of this License, if you modify the > Program, your modified version must prominently offer all users > interacting with it remotely through a computer network (if your version > supports such interaction) an opportunity to receive the Corresponding > Source of your version by providing access to the Corresponding Source > from a network server at no charge, through some standard or customary > means of facilitating copying of software. This potentially means that every freenode user, for example, is interacting with this software, and offering the corresponding source to each of them is an unreasonable burden.
* Use explicit_bzero from LibreSSLJune McEnroe2019-11-06
|
* Implement SASL EXTERNALJune McEnroe2019-11-05
|
* Hash client passwords with cryptJune McEnroe2019-11-04
|
* Move base64 to bounce.hJune McEnroe2019-11-04
|
* Use explicit_bzero to clear passwordsJune McEnroe2019-10-31
| | | | | GNU doesn't implement memset_s, but both FreeBSD and GNU implement explicit_bzero. Darwin doesn't, so #define it in terms of memset_s.
* Clear passwords from memory with memset_sJune McEnroe2019-10-31
|
* Do not duplicate origin on nick changeJune McEnroe2019-10-29
| | | | Oops!
* Update self origin on nick changeJune McEnroe2019-10-29
|
* Relay optional 5th RPL_MYINFO parameterJune McEnroe2019-10-29
|
* Move entire login flow to state and reorganize itJune McEnroe2019-10-28
|
* Wait for SASL success before sending CAP ENDJune McEnroe2019-10-27
| | | | | | | Also refuse to continue logging in if SASL authentication fails. I should really just move all of log in and authentication from server.c to state.c...
* Handle nick collisionJune McEnroe2019-10-26
|
* Wait for AUTHENTICATE + from serverJune McEnroe2019-10-26
|
* Do not require RPL_ISUPPORT for stateReadyJune McEnroe2019-10-26
|