diff options
author | June McEnroe <june@causal.agency> | 2020-02-27 02:07:40 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-02-27 02:07:40 -0500 |
commit | 0e519adaadf43bac33ac6caf3d37aed580724ea6 (patch) | |
tree | 1c3750f1ecb3cce5d12c978ad8a27f98ed1b963b /state.c | |
parent | Support setname (diff) | |
download | pounce-0e519adaadf43bac33ac6caf3d37aed580724ea6.tar.gz pounce-0e519adaadf43bac33ac6caf3d37aed580724ea6.zip |
Support cap-notify
Diffstat (limited to '')
-rw-r--r-- | state.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/state.c b/state.c index c714628..d840018 100644 --- a/state.c +++ b/state.c @@ -74,9 +74,9 @@ static void handleCap(struct Message *msg) { require(msg, false, 3); enum Cap caps = capParse(msg->params[2]); - if (!strcmp(msg->params[1], "LS")) { + if (!strcmp(msg->params[1], "LS") || !strcmp(msg->params[1], "NEW")) { caps &= ~(CapSASL | CapUnsupported); - serverFormat("CAP REQ :%s\r\n", capList(caps)); + if (caps) serverFormat("CAP REQ :%s\r\n", capList(caps)); } else if (!strcmp(msg->params[1], "ACK")) { stateCaps |= caps; @@ -87,6 +87,9 @@ static void handleCap(struct Message *msg) { } if (!(stateCaps & CapSASL)) serverFormat("CAP END\r\n"); + } else if (!strcmp(msg->params[1], "DEL")) { + stateCaps &= ~caps; + } else if (!strcmp(msg->params[1], "NAK")) { errx(EX_CONFIG, "server does not support %s", msg->params[2]); } |