| Commit message (Collapse) | Author | Age |
|
|
|
| |
Sent before 001 since that is normally when you would receive it.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
So each message can be logged with its prefix. All other calls to
clientFormat and serverFormat write one message at a time.
|
|
|
|
| |
Only the first colon should be replaced with a null byte.
|
|
|
|
|
|
| |
Setting an AWAY message then disconnecting will no longer replace
the AWAY message with the default one. Reconnecting continues to
always clear AWAY.
|
|
|
|
| |
Rather than causing a tls_write(3) for each remaining token.
|
|
|
|
|
| |
This avoids duplicating tokens when a client sends VERSION and the
server responds with its 005s again.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Or only unsupported caps. Or, as the corresponding commit in catgirl
says, "if CAP LS doesn't list anything good."
|
|
|
|
|
| |
Not totally clear under what conditions 437 is returned, but if it
happens during registration, we should pick a new nick.
|
|
|
|
| |
LibreSSL is "a modified version of that library".
|
|
|
|
|
| |
Allows requesting userhost-in-names on freenode, which is available but
hidden.
|
|
|
|
| |
https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Some clients (Revolution) mistakenly believe they are not connected
until a MOTD has been received. Sending this is harmless, I guess.
|
|
|
|
|
| |
Duration is set to INT_MAX since pounce will never accept cleartext
connections.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This inverts the meaning of -N!
|
| |
|
| |
|
| |
|
|
|
|
|
| |
GCC hates declaring static consts in headers and not using them, for
some stupid reason.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
> 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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Oops!
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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...
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
OwO
|
| |
|