[gitlog] [eggheads/eggdrop] 96ada3: Add CAP support. Closes #423

Geo noreply at github.com
Sun Jul 14 03:33:14 UTC 2019

  Branch: refs/heads/develop
  Home:   https://github.com/eggheads/eggdrop
  Commit: 96ada33e530fb883cff8693ba04b0e669322ceaf
  Author: Geo <vanosg at users.noreply.github.com>
  Date:   2019-07-13 (Sat, 13 Jul 2019)

  Changed paths:
    M doc/sphinx_source/mainDocs/tcl-commands.rst
    M src/mod/server.mod/server.c
    M src/mod/server.mod/server.h
    M src/mod/server.mod/servmsg.c
    M src/mod/server.mod/tclserv.c

  Log Message:
  Add CAP support. Closes #423

This is the first hack at adding a basic CAP support functionality to Eggdrop. Much more work will be required down the road. This merge will be closely tied to the upcoming SASL capability merge, as it appears SASL needs to do stuff in the middle of the CAP negotitation phase, so in preparation there is a little more SASL-specific code in here than would be otherwise preferred, but that is a problem (is it?) to solve another day. 

Basically, Eggdrop will now query a server via CAP LS at connect. It will store that list of server-supported capabilities, then request the user-specified capabilities that exist within that list (and not capabilities that are not supported by the server). If the user has not configured a CAP-required capability in the config, then Eggdrop will not send a REQ request to the server (the initial LS will always happen though).

https://ircv3.net/specs/core/capability-negotiation was used to implement CAP

* Initial CAP support commit
* Update tcl-commands.doc with cap usage
* Do not request unsupported CAP capes from server
* Don't duplicate already-requested capes in cape list
* Suppress request line if empty
* Don't send END before SASL is done
* Prevent CAP request dupes after server reconnect

More information about the Changes mailing list