Implement IRCv3.2 capability negotiation
authorShane Synan <digitalcircuit36939@gmail.com>
Wed, 17 Feb 2016 20:00:43 +0000 (14:00 -0600)
committerShane Synan <digitalcircuit36939@gmail.com>
Wed, 17 Feb 2016 20:00:43 +0000 (14:00 -0600)
commitadc18a7284e7124639fa4b354251d6b102dcf6b7
tree4d61f81a45af509ea8616a2e487a60d8d451c201
parent9351722d2deb2439c4251d69707230b574846272
Implement IRCv3.2 capability negotiation

Always send CAP LS, similar to ZNC and HexChat.  IrcEventCap checks
returned capabilities, queuing up desired ones until all replies
finish, then requests each capability one-by-one.  This prevents an
error with one capability from blocking all of them.

See http://ircv3.net/specs/core/capability-negotiation-3.1.html
And http://ircv3.net/specs/core/capability-negotiation-3.2.html

Modify SASL authentication to only happen if present in capability
list.  If it's not supported, log an error in the status buffer and
continue connecting anyways.

See http://ircv3.net/specs/extensions/sasl-3.1.html
And http://ircv3.net/specs/extensions/sasl-3.2.html
src/core/corenetwork.cpp
src/core/corenetwork.h
src/core/coresessioneventprocessor.cpp
src/core/coresessioneventprocessor.h
src/core/ircparser.cpp