X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/8f9e3388b0f0962f89a23a0d0e076c5d2c4ed387..e0ee1ed8a1244740d4cad80273e0f4603e9cf744:/src/proto-p10.c diff --git a/src/proto-p10.c b/src/proto-p10.c index 5a6c833..f55dd7e 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -744,6 +744,12 @@ irc_eob_ack(void) } } +void +irc_rpong(const char *from1, const char *from2, const char *pingtime, const char *clientinfo) +{ + putsock("%s " P10_RPONG " %s %s %s :%s", self->numeric, from1, from2, pingtime, clientinfo); +} + void irc_ping(const char *payload) { @@ -1304,6 +1310,19 @@ static CMD_FUNC(cmd_eob_ack) return 1; } +static CMD_FUNC(cmd_rping) +{ + struct server *dest; + + if (!(dest = GetServerN(argv[1]))) + return 0; + + if (dest == self) + irc_rpong(argv[2], argv[3], argv[4], argv[5]); + + return 1; +} + static CMD_FUNC(cmd_ping) { struct server *srv; @@ -2399,9 +2418,8 @@ init_parse(void) dict_insert(irc_func_dict, CMD_ADMIN, cmd_admin); dict_insert(irc_func_dict, TOK_ADMIN, cmd_admin); - /* XXX write functions */ - dict_insert(irc_func_dict, CMD_RPING, cmd_dummy); - dict_insert(irc_func_dict, TOK_RPING, cmd_dummy); + dict_insert(irc_func_dict, CMD_RPING, cmd_rping); + dict_insert(irc_func_dict, TOK_RPING, cmd_rping); dict_insert(irc_func_dict, CMD_RPONG, cmd_dummy); dict_insert(irc_func_dict, TOK_RPONG, cmd_dummy);