summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
authorNakidai <nakidai@disroot.org>2026-01-30 18:26:22 +0300
committerNakidai <nakidai@disroot.org>2026-01-30 18:26:22 +0300
commit9fa2ddad60c16383fb927645e50ba142050f8110 (patch)
tree39298850f993f6b559de71d2824a889bf7c33e4b /handle.c
parent60d94739ecaafe02591ac63451293b7e2e7c30a7 (diff)
downloadlibreircd-0.1.0.tar.gz
libreircd-0.1.0.zip
Add PING command HEAD v0.1.0 master
Then I should make some logic for pinging others...
Diffstat (limited to 'handle.c')
-rw-r--r--handle.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/handle.c b/handle.c
index 1b9f8e6..df36e1f 100644
--- a/handle.c
+++ b/handle.c
@@ -152,6 +152,21 @@ part(struct Message *msg, struct Peer *peer)
 }
 
 static int
+ping(struct Message *msg, struct Peer *peer)
+{
+	ensure(msg->params[0] && *msg->params[0], reply(peer, 409), 0);
+
+	writef(
+		peer->fd,
+		":%s PONG :%s",
+		hostname,
+		msg->params[0]
+	);
+
+	return 0;
+}
+
+static int
 privmsg(struct Message *msg, struct Peer *peer)
 {
 	size_t i;
@@ -274,6 +289,7 @@ static struct Handler {
 	{ "nick", nick },
 	{ "notice", privmsg },
 	{ "part", part },
+	{ "ping", ping },
 	{ "privmsg", privmsg },
 	{ "quit", quit },
 	{ "user", user },