summary refs log tree commit diff
Commit message (Collapse)AuthorAge
* Intercept client QUIT with no parameter 1.0p3June McEnroe2019-12-28
| | | | Oops! Clients could get pounce to quit if they didn't send a message.
* Update source URLJune McEnroe2019-12-24
| | | | Oops, thought I did this already.
* Exit on zero-length server readJune McEnroe2019-12-22
|
* Revert "Exit when server gets POLLHUP"June McEnroe2019-12-22
| | | | | | | Turns out the more likely thing is that the fd will just continue to be POLLIN and produce zero-length reads. This reverts commit 5707b15920a1ce57f01db0d592487d833218be9d.
* Exit when server gets POLLHUPJune McEnroe2019-12-20
| | | | | | This should maybe gracefully inform clients of what happened, but for now this is much better than the infinite poll loop that happened previously.
* Add CONTRIBUTING section to READMEJune McEnroe2019-12-17
|
* Don't send self-PMs to the server 1.0p2June McEnroe2019-12-08
|
* Reference openssl(1) by absolute pathedef2019-11-27
| | | | | This still allows using openssl(1) from PATH, but defaults to using ${LIBRESSL_PREFIX}/bin/openssl.
* Simplify Linux.mkJune McEnroe2019-11-27
| | | | | This should just be what is definitely necessary, and all distros have their own problems. This works on Void Linux at least.
* Don't always create ${ETCDIR}/rc.dJune McEnroe2019-11-26
|
* Link calico with libcrypto on Linux 1.0p1June McEnroe2019-11-21
| | | | For the strlcpy implementation.
* Fix wordcmp return value when the words have differing lengthsMichael Forney2019-11-21
| | | | | | | | | | Otherwise, the result of strncmp gets converted size_t, since size_t has greater rank than int. Since wordcmp is only ever used as a boolean condition, this poses no real issue, but presumably, it is meant to behave like the other *cmp function and return a value less than, equal to, or greater than 0 depending on the result of the comparison.
* 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.
* Avoid a couple VLAs with constant sizeMichael Forney2019-11-20
| | | | These are really just regular arrays masquerading as VLAs.
* client: Include time.h for gmtime and strftimeMichael Forney2019-11-20
|
* Use strlcpy for sun_pathsJune McEnroe2019-11-20
| | | | | | | | | | | | My understanding is that sun_path need not be nul-terminated, but I didn't notice that SUN_LEN actually requires it. > The length of UNIX-domain address, required by bind(2) and connect(2), > can be calculated by the macro SUN_LEN() defined in <sys/un.h>. The > sun_path field must be terminated by a NUL character to be used with > SUN_LEN(), but the terminating NUL is not part of the address. Thanks to Duncan Overbruck <mail@duncano.de> for the report.
* Format milliseconds as intJune McEnroe2019-11-20
| | | | | I don't know what I was thinking. I'm expecting a number less than 1000 of course that fits in int.
* Mention the name CertFP in SASL EXTERNAL guide 1.0June McEnroe2019-11-18
|
* Document accept and exit behaviorJune McEnroe2019-11-18
|
* Remove ISUPPORT draft referenceJune McEnroe2019-11-18
| | | | | I don't actually deal with it at all other than storing them for syncing clients.
* Document inadvertent echo bugJune McEnroe2019-11-18
|
* Request NAMES on sync by defaultJune McEnroe2019-11-15
| | | | This inverts the meaning of -N!
* Add concept of passive clientsJune McEnroe2019-11-14
|
* Save and load full struct timevalJune McEnroe2019-11-14
|
* Use struct timeval for sub-second precisionJune McEnroe2019-11-14
|
* Remove server-time filter TODOJune McEnroe2019-11-14
| | | | | I think it's fine to keep it separate since it's a core function of the bouncer.
* Tweak filter regexesJune McEnroe2019-11-14
|
* Filter multi-prefixJune McEnroe2019-11-14
|
* Replace filters with regex replacesJune McEnroe2019-11-14
|
* Refactor filterUserhostInNamesJune McEnroe2019-11-13
|
* Factor out wordcpy for filtersJune McEnroe2019-11-13
|
* Revert "Test getopt_config"June McEnroe2019-11-11
| | | | | | This reverts commit c8a771828e1d5fc8c476bbd650fafcfb7ba390a8. It just feels gross... idk.
* Test getopt_configJune McEnroe2019-11-11
|
* Add userhost-in-names to manualJune McEnroe2019-11-11
|
* Skip initial NAMES parametersJune McEnroe2019-11-11
| | | | | | | Channel names can contain '!' so splitting the whole message on it won't work. I hate this code though.
* Filter userhost-in-namesJune McEnroe2019-11-11
| | | | I really want to be writing tests for these functions...
* Compare words without copying in filtersJune McEnroe2019-11-10
|
* Separate tags from all targetJune McEnroe2019-11-10
|
* Filter invite-notifyJune McEnroe2019-11-10
|
* Add capsicum note to READMEJune McEnroe2019-11-10
|
* Filter extended-joinJune McEnroe2019-11-10
|
* Expand client configuration documentation and list capabilitiesJune McEnroe2019-11-10
|
* Request all supported caps from serverJune McEnroe2019-11-10
|
* Filter ACCOUNT, AWAY, CHGHOST for incapable clientsJune McEnroe2019-11-10
|
* Rename listen to localJune McEnroe2019-11-10
|
* Remove extended-join and invite-notifyJune McEnroe2019-11-09
| | | | | | | | | | | | 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.
* Maintain stateCaps and offer them to clientsJune McEnroe2019-11-09
|