*/
#include "config.h"
-#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 "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 <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
+#include <stdlib.h>
#include <string.h>
/*
* 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, *origin;
assert(0 != cptr);
assert(cptr == sptr);
if (parc < 2 || EmptyString(parv[1]))
return send_reply(sptr, ERR_NOORIGIN);
+ origin = parv[1];
destination = parv[2]; /* Will get NULL or pointer (parc >= 2!!) */
if (!EmptyString(destination) && 0 != ircd_strcmp(destination, cli_name(&me))) {
*/
/*
- * ms_ping - server message handler template
+ * ms_ping - server message handler
*/
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))) {
/*
}
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
-