added basic ssl support to ircu
[ircu2.10.12-pk.git] / ircd / m_rpong.c
index ce0278aa34409e0864d219593df96c7c78c1576b..4f32f79e1446b633b2311a363e1b7ed5f4e42688 100644 (file)
  *            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.h"
+#include "ircd_log.h"
 #include "ircd_reply.h"
 #include "ircd_string.h"
+#include "msg.h"
 #include "numeric.h"
 #include "numnicks.h"
 #include "opercmds.h"
 #include "send.h"
 
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
 
 /*
  * ms_rpong - server message handler
@@ -116,84 +112,37 @@ int ms_rpong(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
   if (!IsServer(sptr))
     return 0;
 
-  if (parc < 5)
-    return need_more_params(sptr, "RPING");
-
-  if (!(acptr = FindClient(parv[1])))
-    return 0;
-
-  if (!IsMe(acptr))
-  {
-    if (IsServer(acptr) && parc > 5)
-    {
-      sendto_one(acptr, ":%s RPONG %s %s %s %s :%s",
-          parv[0], parv[1], parv[2], parv[3], parv[4], parv[5]);
-      return 0;
-    }
+  if (parc < 5) {
+    /*
+     * PROTOCOL ERROR
+     */
+    return need_more_params(sptr, "RPONG");
   }
-  else
-  {
-    parv[1] = parv[2];
-    parv[2] = sptr->name;
-    parv[0] = me.name;
-    parv[3] = militime(parv[3], parv[4]);
-    parv[4] = parv[5];
-    if (!(acptr = FindUser(parv[1])))
-      return 0;                 /* No bouncing between servers ! */
-  }
-
-  sendto_one(acptr, ":%s RPONG %s %s %s :%s",
-      parv[0], parv[1], parv[2], parv[3], parv[4]);
-  return 0;
-}
-
-
-#if 0
-/*
- * m_rpong  -- by Run too :)
- *
- * parv[0] = sender prefix
- * parv[1] = from pinged server: start server; from start server: sender
- * parv[2] = from pinged server: sender; from start server: pinged server
- * parv[3] = pingtime in ms
- * parv[4] = client info (for instance start time)
- */
-int m_rpong(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
-{
-  struct Client *acptr;
-
-  if (!IsServer(sptr))
-    return 0;
-
-  if (parc < 5)
-    return need_more_params(sptr, "RPING");
-
-  if (!(acptr = FindClient(parv[1])))
-    return 0;
-
-  if (!IsMe(acptr))
-  {
-    if (IsServer(acptr) && parc > 5)
-    {
-      sendto_one(acptr, ":%s RPONG %s %s %s %s :%s",
-          parv[0], parv[1], parv[2], parv[3], parv[4], parv[5]);
+  if (parc == 6) {
+    /*
+     * from pinged server to source server
+     */
+    if (!(acptr = FindServer(parv[1])) && !(acptr = FindNServer(parv[1])))
+      return 0;
+   
+    if (IsMe(acptr)) {
+      if (!(acptr = findNUser(parv[2])))
+        return 0;
+
+      sendcmdto_one(&me, CMD_RPONG, acptr, "%C %s %s :%s", acptr, cli_name(sptr),
+                   militime(parv[3], parv[4]), parv[5]);
+    } else
+      sendcmdto_one(sptr, CMD_RPONG, acptr, "%s %s %s %s :%s", parv[1],
+                   parv[2], parv[3], parv[4], parv[5]);
+  } else {
+    /*
+     * returned from source server to client
+     */
+    if (!(acptr = findNUser(parv[1])))
       return 0;
-    }
-  }
-  else
-  {
-    parv[1] = parv[2];
-    parv[2] = sptr->name;
-    parv[0] = me.name;
-    parv[3] = militime(parv[3], parv[4]);
-    parv[4] = parv[5];
-    if (!(acptr = FindUser(parv[1])))
-      return 0;                 /* No bouncing between servers ! */
-  }
 
-  sendto_one(acptr, ":%s RPONG %s %s %s :%s",
-      parv[0], parv[1], parv[2], parv[3], parv[4]);
+    sendcmdto_one(sptr, CMD_RPONG, acptr, "%C %s %s :%s", acptr, parv[2],
+                 parv[3], parv[4]);
+  }
   return 0;
 }
-#endif /* 0 */
-