about summary refs log tree commit diff
path: root/client.c (follow)
Commit message (Collapse)AuthorAge
* 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
|
* Filter invite-notifyJune McEnroe2019-11-10
|
* Filter extended-joinJune McEnroe2019-11-10
|
* Filter ACCOUNT, AWAY, CHGHOST for incapable clientsJune McEnroe2019-11-10
|
* Maintain stateCaps and offer them to clientsJune McEnroe2019-11-09
|
* Parse capabilitiesJune McEnroe2019-11-09
| | | | | | 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.
* Define macro for bit flag enumsJune McEnroe2019-11-09
|
* Only change AWAY status for registered clientsJune McEnroe2019-11-08
| | | | | | 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.
* 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
|
* Zero PASS parameterJune McEnroe2019-11-04
|
* Hash client passwords with cryptJune 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.
* Shrink client buffer sizeJune McEnroe2019-10-31
| | | | | | | Clients are generally not going to send huge amounts at a time, and IRC messages are limited to 512 bytes. If in the future we supported message tags from clients, which have a size limit of 8191 bytes, this would unfortunately have to be set much higher.
* Specify when command is allowed in Handlers listJune McEnroe2019-10-28
|
* Disallow PRIVMSG/NOTICE before registrationJune McEnroe2019-10-28
|
* Move entire login flow to state and reorganize itJune McEnroe2019-10-28
|
* Only increment consumer after successful sendJune McEnroe2019-10-27
|
* Improve client/server error messagesJune McEnroe2019-10-27
|
* Drop clients on zero-length readsJune McEnroe2019-10-27
|
* Require PASS before USERJune McEnroe2019-10-26
| | | | Prevent creating a ring consumer without authentication.
* OopsJune McEnroe2019-10-26
|
* Disconnect client on unknown commandJune McEnroe2019-10-26
| | | | | During registration, no other commands should be sent. Afterwards, only intercepted commands will get parsed.
* Add AGPLv3 notice on client registrationJune McEnroe2019-10-25
| | | | OwO
* Send PRIVMSG and NOTICE to other clientsJune McEnroe2019-10-25
|
* Clean up clientJune McEnroe2019-10-25
|
* Use produce/consume words for ring bufferJune McEnroe2019-10-25
| | | | To disambiguate clientRecv and clientRead, say clientConsume.
* Implement client reading from ring bufferJune McEnroe2019-10-25
| | | | It's still messy but it works!!
* Zero entire Client structJune McEnroe2019-10-24
| | | | | Does zeroing that extra 4K really matter? I'd rather not have uninitialized reads.
* Register readers by client usernamesJune McEnroe2019-10-24
|
* Unset non-blocking on clientsJune McEnroe2019-10-24
| | | | | I figure I'll actually use POLLOUT on clients so should never have issues.
* Intercept client QUITJune McEnroe2019-10-24
|
* Only set NeedCapEnd if unregisteredJune McEnroe2019-10-24
|
* Set client-side origin to irc.invalidJune McEnroe2019-10-24
|
* Factor out client-side origin nameJune McEnroe2019-10-24
|
* Intercept all CAP commands from clientsJune McEnroe2019-10-24
|
* Ignore further CAP ENDJune McEnroe2019-10-24
|
* Implement client CAP for server-timeJune McEnroe2019-10-24
|
* Make clientFormat publicJune McEnroe2019-10-24
|
* Rename some thingsJune McEnroe2019-10-24
|
* Rename Command to MessageJune McEnroe2019-10-23
|
* Synchronize state after client registrationJune McEnroe2019-10-23
|
* Send to server if client has no needsJune McEnroe2019-10-23
|
* Implement some amount of client connectionJune McEnroe2019-10-23
|
* Add dynamic poll listJune McEnroe2019-10-23