From 300891077709bba9899f3fdbe5dc4e10308eedd4 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Thu, 24 Oct 2019 17:29:49 -0400 Subject: Intercept client QUIT --- client.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'client.c') diff --git a/client.c b/client.c index 6bbfdb5..bb1704f 100644 --- a/client.c +++ b/client.c @@ -162,6 +162,13 @@ static void handleCap(struct Client *client, struct Message msg) { } } +static void handleQuit(struct Client *client, struct Message msg) { + (void)msg; + clientFormat(client, "ERROR :Detaching\r\n"); + client->error = true; + // TODO: Set AWAY if no more clients attached. +} + static const struct { const char *cmd; Handler *fn; @@ -169,6 +176,7 @@ static const struct { { "CAP", handleCap }, { "NICK", handleNick }, { "PASS", handlePass }, + { "QUIT", handleQuit }, { "USER", handleUser }, }; @@ -189,6 +197,7 @@ static void clientParse(struct Client *client, char *line) { static bool intercept(const char *line, size_t len) { if (len >= 4 && !memcmp(line, "CAP ", 4)) return true; + if (len >= 5 && !memcmp(line, "QUIT ", 5)) return true; // TODO: Intercept PRIVMSG to send to other clients. return false; } -- cgit 1.4.1