diff options
author | June McEnroe <june@causal.agency> | 2020-02-27 02:56:54 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-02-27 02:56:54 -0500 |
commit | 21bb677c1f395541a1b0610a0f576d58ce778273 (patch) | |
tree | 5860433bdc64a69a677926f7ba48bd6da78a508d /bounce.h | |
parent | Properly treat CAP LS version as a number (diff) | |
download | pounce-21bb677c1f395541a1b0610a0f576d58ce778273.tar.gz pounce-21bb677c1f395541a1b0610a0f576d58ce778273.zip |
Send CAP LS 302 to the server
Diffstat (limited to '')
-rw-r--r-- | bounce.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/bounce.h b/bounce.h index 5aff027..1eb5ce9 100644 --- a/bounce.h +++ b/bounce.h @@ -102,19 +102,20 @@ static const char *CapNames[] = { #undef X }; -static inline enum Cap capParse(const char *list) { +static inline enum Cap capParse(const char *list, const char *values[CapBits]) { enum Cap caps = 0; while (*list) { enum Cap cap = CapUnsupported; - size_t len = strcspn(list, " "); + size_t len = strcspn(list, "= "); for (size_t i = 0; i < ARRAY_LEN(CapNames); ++i) { if (len != strlen(CapNames[i])) continue; if (strncmp(list, CapNames[i], len)) continue; cap = 1 << i; + if (list[len] == '=' && values) values[i] = &list[len + 1]; break; } caps |= cap; - list += len; + list += strcspn(list, " "); if (*list) list++; } return caps; |