]> jfr.im git - solanum.git/blobdiff - modules/m_connect.c
CONNECT: allow using 3-argument CONNECT with port == 0 locally (closes #119)
[solanum.git] / modules / m_connect.c
index 9f586b49dbdeb4e858c5530c051f80c5efbfc5a5..6edd210cf548b92b5250ba0d7897d8e5c4892156 100644 (file)
@@ -53,11 +53,10 @@ DECLARE_MODULE_AV1(connect, NULL, NULL, connect_clist, NULL, NULL, "$Revision: 3
 
 /*
  * mo_connect - CONNECT command handler
- * 
+ *
  * Added by Jto 11 Feb 1989
  *
  * m_connect
- *      parv[0] = sender prefix
  *      parv[1] = servername
  *      parv[2] = port number
  *      parv[3] = remote server
@@ -84,7 +83,7 @@ mo_connect(struct Client *client_p, struct Client *source_p, int parc, const cha
 
        if((target_p = find_server(source_p, parv[1])))
        {
-               sendto_one_notice(source_p, ":Connect: Server %s already exists from %s.", parv[1], 
+               sendto_one_notice(source_p, ":Connect: Server %s already exists from %s.", parv[1],
                        target_p->from->name);
                return 0;
        }
@@ -111,25 +110,22 @@ mo_connect(struct Client *client_p, struct Client *source_p, int parc, const cha
         * use the default form configuration structure. If missing
         * from there, then use the precompiled default.
         */
-       tmpport = port = server_p->port;
+       tmpport = port = 0;
        if(parc > 2 && !EmptyString(parv[2]))
+               port = atoi(parv[2]);
+       if(port == 0 && server_p->port)
+               port = server_p->port;
+       else if(port <= 0)
        {
-               if((port = atoi(parv[2])) <= 0)
-               {
-                       sendto_one_notice(source_p, ":Connect: Illegal port number");
-                       return 0;
-               }
-       }
-       else if(port <= 0 && (port = PORTNUM) <= 0)
-       {
-               sendto_one_notice(source_p, ":Connect: missing port number");
+               sendto_one_notice(source_p, ":Connect: illegal port number");
                return 0;
        }
+       
        /*
         * Notify all operators about remote connect requests
         */
 
-       ilog(L_SERVER, "CONNECT From %s : %s %s", parv[0], parv[1], parc > 2 ? parv[2] : "");
+       ilog(L_SERVER, "CONNECT From %s : %s %s", source_p->name, parv[1], parc > 2 ? parv[2] : "");
 
        server_p->port = port;
        /*
@@ -138,14 +134,8 @@ mo_connect(struct Client *client_p, struct Client *source_p, int parc, const cha
         */
        if(serv_connect(server_p, source_p))
        {
-#ifndef HIDE_SERVERS_IPS
-                       sendto_one_notice(source_p, ":*** Connecting to %s[%s].%d",
-                               server_p->host, server_p->name, server_p->port);
-#else
                        sendto_one_notice(source_p, ":*** Connecting to %s.%d",
                                server_p->name, server_p->port);
-#endif
-
        }
        else
        {
@@ -163,11 +153,10 @@ mo_connect(struct Client *client_p, struct Client *source_p, int parc, const cha
 
 /*
  * ms_connect - CONNECT command handler
- * 
+ *
  * Added by Jto 11 Feb 1989
  *
  * m_connect
- *      parv[0] = sender prefix
  *      parv[1] = servername
  *      parv[2] = port number
  *      parv[3] = remote server
@@ -230,14 +219,11 @@ ms_connect(struct Client *client_p, struct Client *source_p, int parc, const cha
         * Notify all operators about remote connect requests
         */
        sendto_wallops_flags(UMODE_WALLOP, &me,
-                            "Remote CONNECT %s %d from %s", 
+                            "Remote CONNECT %s %d from %s",
                             parv[1], port, source_p->name);
        sendto_server(NULL, NULL, CAP_TS6, NOCAPS,
                      ":%s WALLOPS :Remote CONNECT %s %d from %s",
                      me.id, parv[1], port, source_p->name);
-       sendto_server(NULL, NULL, NOCAPS, CAP_TS6,
-                     ":%s WALLOPS :Remote CONNECT %s %d from %s",
-                     me.name, parv[1], port, source_p->name);
 
        ilog(L_SERVER, "CONNECT From %s : %s %d", source_p->name, parv[1], port);