diff options
| -rw-r--r-- | handle.c | 16 | ||||
| -rw-r--r-- | reply.c | 5 |
2 files changed, 21 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 }, diff --git a/reply.c b/reply.c index f89a8c9..5da4094 100644 --- a/reply.c +++ b/reply.c @@ -104,6 +104,11 @@ vreply(const struct Peer *peer, int number, va_list ap) getnick(peer), channel ), channel, _); + REPLY(409, WRITE( + ":%s 409 %s :No origin specified", + hostname, + getnick(peer) + ), _); REPLY(411, WRITE( ":%s 411 %s :No recipient given (PRIVMSG)", hostname, |