| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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...
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
|
|
|
| |
Copied and expanded from catgirl.
|
|
|
|
|
| |
Duration is set to INT_MAX since pounce will never accept cleartext
connections.
|
|
|
|
|
| |
So the spec doesn't say I can use cap values in CAP REQ. But it also
doesn't explicitly say I can't.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
I still think this limit is unreasonably large in comparison to 512 for
the actual message.
|
|
|
|
|
|
| |
This commit introduces a '-S' command line option and a "bind" configuration
file option for selecting the source address when making outbound TCP
connections (similar to the corresponding option in catgirl(1)).
|
|
|
|
|
|
|
|
|
| |
This is a little bit messy. Allows setting either -A or -W or both.
Implements SASL EXTERNAL for clients that expect that when connecting
with a client certificate.
Need to test that reloading still works inside capsicum, since I suspect
that rewind call may be blocked.
|
|
|
|
|
|
| |
This way things like litterbox can do it automatically without having to
be configured with a hyphen-prefixed username, which is usually invalid
anywhere else.
|
|
|
|
| |
Oops, thought I did this already.
|
|
|
|
|
| |
This still allows using openssl(1) from PATH, but defaults to using
${LIBRESSL_PREFIX}/bin/openssl.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This inverts the meaning of -N!
|
| |
|
| |
|
|
|
|
| |
I really want to be writing tests for these functions...
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The remaining caps only generate new commands which can easily be
filtered out when sending to clients so will be in the first pass of
support.
extended-join is probably safe to pass through unaltered, just causing
extraneous parameters on JOIN commands, but maybe not.
invite-notify reuses the INVITE command where the invited user is not
self.
|
| |
|
|
|
|
|
|
| |
The list that I've defined are the ones that I expect to be able to
enable probably without any clients breaking... And of course
server-time which pounce implements itself.
|
| |
|
| |
|
|
|
|
|
|
| |
Turns out I did eventually fix this, because I may want to implement
"passive clients" for logging or notification stuff, which wouldn't
affect AWAY status either.
|
|
|
|
|
| |
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.
|