From 12440691c95eb4bfa05e772264d8fdb00b373f56 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 18 Oct 2021 13:29:11 +0200 Subject: [PATCH] Unescape ISUPPORT values This allows ISUPPORT values to contain spaces. References: https://github.com/ircdocs/modern-irc/pull/137 --- lib/irc.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/irc.js b/lib/irc.js index e70f6cd..2286fcb 100644 --- a/lib/irc.js +++ b/lib/irc.js @@ -364,6 +364,13 @@ export function parseCTCP(msg) { return ctcp; } +function unescapeISUPPORTValue(s) { + return s.replace(/\\x[0-9A-Z]{2}/gi, (esc) => { + let hex = esc.slice(2); + return String.fromCharCode(parseInt(hex, 16)); + }); +} + export function parseISUPPORT(tokens, params) { let changed = []; tokens.forEach((tok) => { @@ -377,7 +384,7 @@ export function parseISUPPORT(tokens, params) { let k = tok, v = ""; if (i >= 0) { k = tok.slice(0, i); - v = tok.slice(i + 1); + v = unescapeISUPPORTValue(tok.slice(i + 1)); } k = k.toUpperCase();