diff options
author | June McEnroe <june@causal.agency> | 2019-10-24 17:29:49 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-10-24 17:29:49 -0400 |
commit | 300891077709bba9899f3fdbe5dc4e10308eedd4 (patch) | |
tree | fa64e532b0d2740d361f3a0d899801ba5c0da3f9 | |
parent | Only set NeedCapEnd if unregistered (diff) | |
download | pounce-300891077709bba9899f3fdbe5dc4e10308eedd4.tar.gz pounce-300891077709bba9899f3fdbe5dc4e10308eedd4.zip |
Intercept client QUIT
-rw-r--r-- | client.c | 9 |
1 files changed, 9 insertions, 0 deletions
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; } |