about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-10 14:24:39 -0400
committerJune McEnroe <june@causal.agency>2020-08-10 14:24:39 -0400
commit8f6397137cb25f593a581605ed0126ade395813a (patch)
tree44cceca17a325b4e83ff11f0bd3b0aa1f58ef74c
parentRefactor clientCA and clientSTS as clientCaps (diff)
downloadpounce-8f6397137cb25f593a581605ed0126ade395813a.tar.gz
pounce-8f6397137cb25f593a581605ed0126ade395813a.zip
Refactor intercept to use Handlers and fix QUIT w/o message 1.4p1
The change to support broken clients with bad line endings broke the
interception of QUIT with no message parameter, because the CR is part
of the length passed to intercept.
Diffstat (limited to '')
-rw-r--r--client.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/client.c b/client.c
index 9246085..dc33288 100644
--- a/client.c
+++ b/client.c
@@ -332,12 +332,12 @@ static bool intercept(const char *line, size_t len) {
 		len -= sp - line;
 		line = sp;
 	}
-	if (len >= 4 && !memcmp(line, "CAP ", 4)) return true;
-	if (len == 4 && !memcmp(line, "QUIT", 4)) return true;
-	if (len >= 5 && !memcmp(line, "QUIT ", 5)) return true;
-	if (len >= 7 && !memcmp(line, "NOTICE ", 7)) return true;
-	if (len >= 7 && !memcmp(line, "TAGMSG ", 7)) return true;
-	if (len >= 8 && !memcmp(line, "PRIVMSG ", 8)) return true;
+	for (size_t i = 0; i < ARRAY_LEN(Handlers); ++i) {
+		size_t n = strlen(Handlers[i].cmd);
+		if (len < n) continue;
+		if (memcmp(line, Handlers[i].cmd, n)) continue;
+		if (len == n || line[n] == ' ' || line[n] == '\r') return true;
+	}
 	return false;
 }
 
an>Tweak sans6x8 shading blocksJune McEnroe 2018-09-29Fill 7F through A5 of sans6x10June McEnroe 2018-09-29Add f and ' to psfedJune McEnroe 2018-09-28Add sans6x10 basic glyphsJune McEnroe 2018-09-28Make sans6x8 double quote narrowerJune McEnroe 2018-09-28Add greek glyphs to sans6x8June McEnroe 2018-09-28Add png target in etc/psfJune McEnroe 2018-09-28Disable visual bell in light terminal profileJune McEnroe 2018-09-28Add psf2pngJune McEnroe 2018-09-27Add HJKL for moving glyphs to psfedJune McEnroe 2018-09-27Move psfed paste to edit modeJune McEnroe 2018-09-27Export PWDJune McEnroe Without it, $(PWD) is unset in GNU make. 2018-09-27Add sans6x8 PSF2 fontJune McEnroe 2018-09-26Add copy paste to psfedJune McEnroe 2018-09-25Add r to psfed for invertJune McEnroe 2018-09-24Add psfed, a PSF2 font editorJune McEnroe 2018-09-21Add scheme -i to swap white and blackJune McEnroe 2018-09-21Map caps lock to escape on Linux consoleJune McEnroe 2018-09-19Fix README mandoc lintsJune McEnroe 2018-09-19Un-NOT trans.alpha values in pngoJune McEnroe 2018-09-18Refactor reads in pngo and clear palette between filesJune McEnroe 2018-09-17Add tRNS support to pngoJune McEnroe 2018-09-11Move gfx man pages to gfx/manJune McEnroe 2018-09-11Move bin man pages to bin/manJune McEnroe 2018-09-11Rewrite gfx.7 and render plaintext READMEJune McEnroe 2018-09-11Remove GAMES from BINSJune McEnroe 2018-09-11Rewrite bin.7 and render to plaintext READMEJune McEnroe 2018-09-11Add "blank" lines to man pagesJune McEnroe 2018-09-10Add mdoc syntax fileJune McEnroe 2018-09-08Fix Nm usage in multi-name man pagesJune McEnroe 2018-09-08Put real dates on man pagesJune McEnroe 2018-09-08Replace gfx README with REAMDE.7June McEnroe 2018-09-08Link gfx man pages in ~/.localJune McEnroe