X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_ping.c;h=95d747953e3a37d8ede7a9abfac110e0127099f6;hb=refs%2Fheads%2Fupstream;hp=60e223218e61dd140610ab54ebc5ad3806eab69b;hpb=fda0e2796ececf42f7a36f8066cc63fa1ef736fc;p=ircu2.10.12-pk.git diff --git a/ircd/m_ping.c b/ircd/m_ping.c index 60e2232..95d7479 100644 --- a/ircd/m_ping.c +++ b/ircd/m_ping.c @@ -130,26 +130,23 @@ * note: it is guaranteed that parv[0]..parv[parc-1] are all * non-NULL pointers. */ -#if 0 -/* - * No need to include handlers.h here the signatures must match - * and we don't need to force a rebuild of all the handlers everytime - * we add a new one to the list. --Bleep - */ -#include "handlers.h" -#endif /* 0 */ +#include "config.h" + #include "client.h" #include "hash.h" +#include "ircd_log.h" #include "ircd_reply.h" #include "ircd_string.h" #include "ircd.h" #include "msg.h" #include "numeric.h" #include "numnicks.h" +#include "opercmds.h" #include "s_debug.h" #include "send.h" -#include +/* #include -- Now using assert in ircd_log.h */ +#include #include /* @@ -160,9 +157,28 @@ * parv[2] = destination */ int m_ping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) +{ + assert(0 != cptr); + assert(cptr == sptr); + + if (parc < 2 || EmptyString(parv[1])) + return send_reply(sptr, ERR_NOORIGIN); + + sendcmdto_one(&me, CMD_PONG, sptr, "%C :%s", &me, parv[1]); + return 0; +} + +/* + * mo_ping - oper message handler + * + * parv[0] = sender prefix + * parv[1] = origin + * parv[2] = destination + */ +int mo_ping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { struct Client* acptr; - char* destination; + char *destination; assert(0 != cptr); assert(cptr == sptr); @@ -206,7 +222,7 @@ int m_ping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) */ /* - * ms_ping - server message handler template + * ms_ping - server message handler */ int ms_ping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { @@ -227,6 +243,14 @@ int ms_ping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) origin = parv[1]; destination = parv[2]; /* Will get NULL or pointer (parc >= 2!!) */ + if (parc > 3) + { + /* AsLL ping, send reply back */ + int diff = atoi(militime_float(parv[3])); + sendcmdto_one(&me, CMD_PONG, sptr, "%C %s %s %i %s", &me, origin, + parv[3], diff, militime_float(NULL)); + return 0; + } if (!EmptyString(destination) && 0 != ircd_strcmp(destination, cli_name(&me))) { if ((acptr = FindServer(destination))) { /* @@ -251,47 +275,3 @@ int ms_ping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) } return 0; } - - -#if 0 -/* - * m_ping - * - * parv[0] = sender prefix - * parv[1] = origin - * parv[2] = destination - */ -int m_ping(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) -{ - struct Client *acptr; - char *origin, *destination; - - if (parc < 2 || *parv[1] == '\0') - { - sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]); /* XXX DEAD */ - return 0; - } - origin = parv[1]; - destination = parv[2]; /* Will get NULL or pointer (parc >= 2!!) */ - - acptr = FindClient(origin); - if (acptr && acptr != sptr) - origin = cptr->name; - - if (!EmptyString(destination) && 0 != ircd_strcmp(destination, me.name) != 0) - { - if ((acptr = FindServer(destination))) - sendto_one(acptr, ":%s PING %s :%s", parv[0], origin, destination); /* XXX DEAD */ - else - { - sendto_one(sptr, err_str(ERR_NOSUCHSERVER), /* XXX DEAD */ - me.name, parv[0], destination); - return 0; - } - } - else - sendto_one(sptr, ":%s PONG %s :%s", me.name, me.name, origin); /* XXX DEAD */ - return 0; -} -#endif -