Author: Kev <klmitch@mit.edu>
authorKevin L. Mitchell <klmitch@mit.edu>
Thu, 27 Apr 2000 20:24:12 +0000 (20:24 +0000)
committerKevin L. Mitchell <klmitch@mit.edu>
Thu, 27 Apr 2000 20:24:12 +0000 (20:24 +0000)
Log message:

Some more conversions, some /* XXX DEAD */ comments, and some debugging

git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@208 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

13 files changed:
ChangeLog
ircd/channel.c
ircd/ircd.c
ircd/ircd_relay.c
ircd/m_squit.c
ircd/map.c
ircd/parse.c
ircd/s_conf.c
ircd/s_misc.c
ircd/s_serv.c
ircd/s_stats.c
ircd/s_user.c
ircd/send.c

index 937103a8dd4e0e82d1d29140687be35169ab6987..a9d4f9c2b23f982ef4cd26fec3a1b8499b03cb46 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
+       numeric nick; therefore, we have to use the server name
+
+       * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
+
+       * ircd/send.c: fix minor bugs
+
+       * ircd/s_user.c (check_target_limit): mark dead code so I filter
+       it when I grep
+
+       * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
+       when I grep
+
+       * ircd/parse.c: mark dead code so I filter it when I grep
+
+       * ircd/map.c: mark dead code so I filter it when I grep
+
+       * ircd/ircd.c: mark dead code so I filter it when I grep
+
+       * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
+       functions
+
+       * ircd/channel.c: mark dead code so I filter it when I grep
+
+       * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
+       hope I'm not stepping on toes...
+
+       * ircd/s_conf.c: more sendto_opmask_butone / send_reply
+       conversions; use ircd_snprintf in a couple of cases to negate the
+       possibility of buffer overflow
+
 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
 
        * ircd/channel.c: convert as much as possible to new send
 #
 # ChangeLog for ircu2.10.11
 #
-# $Id: ChangeLog,v 1.105 2000-04-27 02:08:37 kev Exp $
+# $Id: ChangeLog,v 1.106 2000-04-27 20:24:11 kev Exp $
 #
 # Insert new changes at beginning of the change list.
 #
index 9c5d22371a1fde0362ad4b79d21bc1e5d413c929..04ce375fa8155cc3dddf2192645934e782a4c9a3 100644 (file)
@@ -193,10 +193,10 @@ static void sendmodeto_one(struct Client* cptr, const char* from,
                            const char* param, time_t creationtime)
 {
   if (IsServer(cptr) && DoesOp(mode) && creationtime)
-    sendto_one(cptr, ":%s MODE %s %s %s " TIME_T_FMT,
+    sendto_one(cptr, ":%s MODE %s %s %s " TIME_T_FMT, /* XXX DEAD */
                from, name, mode, param, creationtime);
   else
-    sendto_one(cptr, ":%s MODE %s %s %s", from, name, mode, param);
+    sendto_one(cptr, ":%s MODE %s %s %s", from, name, mode, param); /* XXX DEAD */
 }
 #endif /* 0 */
 
@@ -2538,7 +2538,7 @@ void send_user_joins(struct Client *cptr, struct Client *user)
       if (cnt)
       {
         buf[len - 1] = '\0';
-        sendto_one(cptr, "%s", buf);
+        sendto_one(cptr, "%s", buf); /* XXX Possibly DEAD */
       }
       *buf = ':';
       strcpy(buf + 1, user->name);
@@ -2556,7 +2556,7 @@ void send_user_joins(struct Client *cptr, struct Client *user)
     }
   }
   if (*buf && cnt)
-    sendto_one(cptr, "%s", buf);
+    sendto_one(cptr, "%s", buf); /* XXX Possibly DEAD */
 }
 
 /*
@@ -2617,22 +2617,22 @@ void send_hack_notice(struct Client *cptr, struct Client *sptr, int parc,
           ":%s NOTICE * :*** Notice -- %sHACK(%d): %s MODE %s %s%s ["
           TIME_T_FMT "]", me.name, (badop == 3) ? "BOUNCE or " : "", badop,
           parv[0], parv[1], parv[2], params, chptr->creationtime);
-      sendbufto_op_mask((badop == 3) ? SNO_HACK3 : (badop ==
+      sendbufto_op_mask((badop == 3) ? SNO_HACK3 : (badop == /* XXX DYING */
           4) ? SNO_HACK4 : SNO_HACK2);
 
       if ((IsServer(sptr)) && (badop == 2))
       {
         sprintf_irc(sendbuf, ":%s DESYNCH :HACK: %s MODE %s %s%s",
             me.name, parv[0], parv[1], parv[2], params);
-        sendbufto_serv_butone(cptr);
+        sendbufto_serv_butone(cptr); /* XXX DYING */
       }
       break;
     }
     case 2:                     /* No conversion is needed for CREATE; the only numnick is sptr */
     {
-      sendto_serv_butone(cptr, ":%s DESYNCH :HACK: %s CREATE %s %s",
+      sendto_serv_butone(cptr, ":%s DESYNCH :HACK: %s CREATE %s %s", /* XXX DYING */
           me.name, sptr->name, chptr->chname, parv[2]);
-      sendto_op_mask(SNO_HACK2, "HACK(2): %s CREATE %s %s",
+      sendto_op_mask(SNO_HACK2, "HACK(2): %s CREATE %s %s", /* XXX DYING */
           sptr->name, chptr->chname, parv[2]);
       break;
     }
@@ -2647,7 +2647,7 @@ void send_hack_notice(struct Client *cptr, struct Client *sptr, int parc,
         sprintf_irc(sendbuf,
             ":%s NOTICE * :*** Notice -- HACK: %s KICK %s <%s> :%s",
             me.name, sptr->name, parv[1], parv[2], parv[3]);
-      sendbufto_op_mask(SNO_HACK4);
+      sendbufto_op_mask(SNO_HACK4); /* XXX DYING */
       break;
     }
   }
index ad95a75eb24131e3b733b7efd1ab85106feb00a6..f49033145a66d2041e123f0419feebc38c32d5c7 100644 (file)
@@ -435,16 +435,16 @@ static time_t check_pings(void)
     {
       if (IsServer(cptr) || IsConnecting(cptr) || IsHandshake(cptr))
       {
-        sendto_ops("No response from %s, closing link", cptr->name);
+        sendto_ops("No response from %s, closing link", cptr->name); /* XXX DEAD */
         exit_client(cptr, cptr, &me, "Ping timeout");
         continue;
       }
       else {
         if (!IsRegistered(cptr) && *cptr->name && *cptr->user->username) {
-          sendto_one(cptr,
+          sendto_one(cptr, /* XXX DEAD */
               ":%s %d %s :Your client may not be compatible with this server.",
               me.name, ERR_BADPING, cptr->name);
-          sendto_one(cptr,
+          sendto_one(cptr, /* XXX DEAD */
               ":%s %d %s :Compatible clients are available at "
               "ftp://ftp.undernet.org/pub/irc/clients",
               me.name, ERR_BADPING, cptr->name);
@@ -465,9 +465,9 @@ static time_t check_pings(void)
        */
       cptr->lasttime = CurrentTime - ping;
       if (IsUser(cptr))
-        sendto_one(cptr, "PING :%s", me.name);
+        sendto_one(cptr, "PING :%s", me.name); /* XXX DEAD */
       else
-        sendto_one(cptr, "%s " TOK_PING " :%s", NumServ(&me), me.name);
+        sendto_one(cptr, "%s " TOK_PING " :%s", NumServ(&me), me.name); /* XXX DEAD */
     }
 ping_timeout:
     timeout = cptr->lasttime + max_ping;
index d997b90ee09aaece3e87262e7c3969720ade7973..a6d771db39aad15c394dea49f302b2445c2ba9c8 100644 (file)
@@ -59,22 +59,22 @@ void relay_channel_message(struct Client* sptr, const char* name, const char* te
   assert(0 != text);
 
   if (0 == (chptr = FindChannel(name))) {
-    send_error_to_client(sptr, ERR_NOSUCHCHANNEL, name);
+    send_reply(sptr, ERR_NOSUCHCHANNEL, name);
     return;
   }
   /*
    * This first: Almost never a server/service
    */
   if (!client_can_send_to_channel(sptr, chptr)) {
-    send_error_to_client(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
+    send_reply(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
     return;
   }
   if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
       check_target_limit(sptr, chptr, chptr->chname, 0))
     return;
 
-  sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
-                           TOK_PRIVATE, chptr->chname, text);
+  sendcmdto_channel_butone(sptr, CMD_PRIVATE, chptr, sptr->from,
+                          SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
 }
 
 void relay_channel_notice(struct Client* sptr, const char* name, const char* text)
@@ -96,8 +96,8 @@ void relay_channel_notice(struct Client* sptr, const char* name, const char* tex
       check_target_limit(sptr, chptr, chptr->chname, 0))
     return;  
 
-  sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
-                           TOK_NOTICE, chptr->chname, text);
+  sendcmdto_channel_butone(sptr, CMD_NOTICE, chptr, sptr->from,
+                          SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
 }
 
 void server_relay_channel_message(struct Client* sptr, const char* name, const char* text)
@@ -111,7 +111,7 @@ void server_relay_channel_message(struct Client* sptr, const char* name, const c
     /*
      * XXX - do we need to send this back from a remote server?
      */
-    send_error_to_client(sptr, ERR_NOSUCHCHANNEL, name);
+    send_reply(sptr, ERR_NOSUCHCHANNEL, name);
     return;
   }
   /*
@@ -119,11 +119,11 @@ void server_relay_channel_message(struct Client* sptr, const char* name, const c
    * Servers may have channel services, need to check for it here
    */
   if (client_can_send_to_channel(sptr, chptr) || IsChannelService(sptr)) {
-    sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
-                             TOK_PRIVATE, chptr->chname, text);
+    sendcmdto_channel_butone(sptr, CMD_PRIVATE, chptr, sptr->from,
+                            SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
   }
   else
-    send_error_to_client(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
+    send_reply(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
 }
 
 void server_relay_channel_notice(struct Client* sptr, const char* name, const char* text)
@@ -140,8 +140,8 @@ void server_relay_channel_notice(struct Client* sptr, const char* name, const ch
    * Servers may have channel services, need to check for it here
    */
   if (client_can_send_to_channel(sptr, chptr) || IsChannelService(sptr)) {
-    sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
-                             TOK_NOTICE, chptr->chname, text);
+    sendcmdto_channel_butone(sptr, CMD_NOTICE, chptr, sptr->from,
+                            SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
   }
 }
 
@@ -157,14 +157,14 @@ void relay_directed_message(struct Client* sptr, char* name, char* server, const
   assert(0 != server);
 
   if (0 == (acptr = FindServer(server + 1))) {
-    send_error_to_client(sptr, ERR_NOSUCHNICK, name);
+    send_reply(sptr, ERR_NOSUCHNICK, name);
     return;
   }
   /*
    * NICK[%host]@server addressed? See if <server> is me first
    */
   if (!IsMe(acptr)) {
-    sendto_one(acptr, ":%s %s %s :%s", sptr->name, MSG_PRIVATE, name, text);
+    sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%s :%s", name, text);
     return;
   }
   /*
@@ -178,7 +178,7 @@ void relay_directed_message(struct Client* sptr, char* name, char* server, const
 
   if (!(acptr = FindUser(name)) || !MyUser(acptr) ||
       (!EmptyString(host) && 0 != match(host, acptr->user->host))) {
-    send_error_to_client(sptr, ERR_NOSUCHNICK, name);
+    send_reply(sptr, ERR_NOSUCHNICK, name);
     return;
   }
 
@@ -187,8 +187,7 @@ void relay_directed_message(struct Client* sptr, char* name, char* server, const
     *--host = '%';
 
   if (!(is_silenced(sptr, acptr)))
-    sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
-                      sptr->name, MSG_PRIVATE, name, text);
+    sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%s :%s", name, text);
 }
 
 void relay_directed_notice(struct Client* sptr, char* name, char* server, const char* text)
@@ -207,7 +206,7 @@ void relay_directed_notice(struct Client* sptr, char* name, char* server, const
    * NICK[%host]@server addressed? See if <server> is me first
    */
   if (!IsMe(acptr)) {
-    sendto_one(acptr, ":%s %s %s :%s", sptr->name, MSG_NOTICE, name, text);
+    sendcmdto_one(sptr, CMD_NOTICE, acptr, "%s :%s", name, text);
     return;
   }
   /*
@@ -228,8 +227,7 @@ void relay_directed_notice(struct Client* sptr, char* name, char* server, const
     *--host = '%';
 
   if (!(is_silenced(sptr, acptr)))
-    sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
-                      sptr->name, MSG_NOTICE, name, text);
+    sendcmdto_one(sptr, CMD_NOTICE, acptr, "%s :%s", name, text);
 }
 
 void relay_private_message(struct Client* sptr, const char* name, const char* text)
@@ -241,7 +239,7 @@ void relay_private_message(struct Client* sptr, const char* name, const char* te
   assert(0 != text);
 
   if (0 == (acptr = FindUser(name))) {
-    send_error_to_client(sptr, ERR_NOSUCHNICK, name);
+    send_reply(sptr, ERR_NOSUCHNICK, name);
     return;
   }
   if (check_target_limit(sptr, acptr, acptr->name, 0) ||
@@ -252,19 +250,14 @@ void relay_private_message(struct Client* sptr, const char* name, const char* te
    * send away message if user away
    */
   if (acptr->user && acptr->user->away)
-    sendto_one(sptr, rpl_str(RPL_AWAY),
-               me.name, sptr->name, acptr->name, acptr->user->away);
+    send_reply(sptr, RPL_AWAY, acptr->name, acptr->user->away);
   /*
    * deliver the message
    */
-  if (MyUser(acptr)) {
+  if (MyUser(acptr))
     add_target(acptr, sptr);
-    sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
-                      sptr->name, MSG_PRIVATE, acptr->name, text);
-  }
-  else
-    sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr),
-               TOK_PRIVATE, NumNick(acptr), text);
+
+  sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%C :%s", acptr, text);
 }
 
 void relay_private_notice(struct Client* sptr, const char* name, const char* text)
@@ -282,14 +275,10 @@ void relay_private_notice(struct Client* sptr, const char* name, const char* tex
   /*
    * deliver the message
    */
-  if (MyUser(acptr)) {
+  if (MyUser(acptr))
     add_target(acptr, sptr);
-    sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
-                      sptr->name, MSG_NOTICE, acptr->name, text);
-  }
-  else
-    sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr),
-               TOK_NOTICE, NumNick(acptr), text);
+
+  sendcmdto_one(sptr, CMD_NOTICE, acptr, "%C :%s", acptr, text);
 }
 
 void server_relay_private_message(struct Client* sptr, const char* name, const char* text)
@@ -302,27 +291,17 @@ void server_relay_private_message(struct Client* sptr, const char* name, const c
    * nickname addressed?
    */
   if (0 == (acptr = findNUser(name)) || !IsUser(acptr)) {
-    sendto_one(sptr,
-               ":%s %d %s * :Target left UnderNet. Failed to deliver: [%.20s]",
-               me.name, ERR_NOSUCHNICK, sptr->name, text);
+    send_reply(sptr, RPL_EXPLICIT | ERR_NOSUCHNICK, "* :Target left UnderNet. "
+              "Failed to deliver: [%.20s]", text);
     return;
   }
   if (is_silenced(sptr, acptr))
     return;
 
-  if (MyUser(acptr)) {
+  if (MyUser(acptr))
     add_target(acptr, sptr);
-    sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
-                      sptr->name, MSG_PRIVATE, acptr->name, text);
-  }
-  else {
-    if (IsServer(sptr))
-      sendto_one(acptr, "%s %s %s%s :%s", NumServ(sptr),
-                 TOK_PRIVATE, NumNick(acptr), text);
-    else
-      sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr),
-                 TOK_PRIVATE, NumNick(acptr), text);
-  }        
+
+  sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%C :%s", acptr, text);
 }
 
 
@@ -341,19 +320,10 @@ void server_relay_private_notice(struct Client* sptr, const char* name, const ch
   if (is_silenced(sptr, acptr))
     return;
 
-  if (MyUser(acptr)) {
+  if (MyUser(acptr))
     add_target(acptr, sptr);
-    sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
-                      sptr->name, MSG_NOTICE, acptr->name, text);
-  }
-  else {
-    if (IsServer(sptr))
-      sendto_one(acptr, "%s %s %s%s :%s", NumServ(sptr), 
-                 TOK_NOTICE, NumNick(acptr), text);
-    else            
-      sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr), 
-                 TOK_NOTICE, NumNick(acptr), text);
-  }              
+
+  sendcmdto_one(sptr, CMD_NOTICE, acptr, "%C :%s", acptr, text);
 }
 
 void relay_masked_message(struct Client* sptr, const char* mask, const char* text)
@@ -368,7 +338,7 @@ void relay_masked_message(struct Client* sptr, const char* mask, const char* tex
    * look for the last '.' in mask and scan forward
    */
   if (0 == (s = strrchr(mask, '.'))) {
-    send_error_to_client(sptr, ERR_NOTOPLEVEL, mask);
+    send_reply(sptr, ERR_NOTOPLEVEL, mask);
     return;
   }
   while (*++s) {
@@ -376,7 +346,7 @@ void relay_masked_message(struct Client* sptr, const char* mask, const char* tex
        break;
   }
   if (*s == '*' || *s == '?') {
-    send_error_to_client(sptr, ERR_WILDTOPLEVEL, mask);
+    send_reply(sptr, ERR_WILDTOPLEVEL, mask);
     return;
   }
   s = mask;
@@ -384,9 +354,11 @@ void relay_masked_message(struct Client* sptr, const char* mask, const char* tex
     host_mask = 1;
     ++s;
   }
-  sendto_match_butone(IsServer(sptr->from) ? sptr->from : 0,
-                      sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
-                      ":%s %s %s :%s", sptr->name, MSG_PRIVATE, mask, text);
+
+  sendcmdto_match_butone(sptr, CMD_PRIVATE, s,
+                        IsServer(sptr->from) ? sptr->from : 0,
+                        host_mask ? MATCH_HOST : MATCH_SERVER,
+                        "%s :%s", mask, text);
 }
 
 void relay_masked_notice(struct Client* sptr, const char* mask, const char* text)
@@ -401,7 +373,7 @@ void relay_masked_notice(struct Client* sptr, const char* mask, const char* text
    * look for the last '.' in mask and scan forward
    */
   if (0 == (s = strrchr(mask, '.'))) {
-    send_error_to_client(sptr, ERR_NOTOPLEVEL, mask);
+    send_reply(sptr, ERR_NOTOPLEVEL, mask);
     return;
   }
   while (*++s) {
@@ -409,7 +381,7 @@ void relay_masked_notice(struct Client* sptr, const char* mask, const char* text
        break;
   }
   if (*s == '*' || *s == '?') {
-    send_error_to_client(sptr, ERR_WILDTOPLEVEL, mask);
+    send_reply(sptr, ERR_WILDTOPLEVEL, mask);
     return;
   }
   s = mask;
@@ -417,9 +389,11 @@ void relay_masked_notice(struct Client* sptr, const char* mask, const char* text
     host_mask = 1;
     ++s;
   }
-  sendto_match_butone(IsServer(sptr->from) ? sptr->from : 0,
-                      sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
-                      ":%s %s %s :%s", sptr->name, MSG_NOTICE, mask, text);
+
+  sendcmdto_match_butone(sptr, CMD_NOTICE, s,
+                        IsServer(sptr->from) ? sptr->from : 0,
+                        host_mask ? MATCH_HOST : MATCH_SERVER,
+                        "%s :%s", mask, text);
 }
 
 void server_relay_masked_message(struct Client* sptr, const char* mask, const char* text)
@@ -434,8 +408,10 @@ void server_relay_masked_message(struct Client* sptr, const char* mask, const ch
     host_mask = 1;
     ++s;
   }
-  sendto_match_butone(sptr->from, sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
-                      ":%s %s %s :%s", sptr->name, MSG_PRIVATE, mask, text);
+  sendcmdto_match_butone(sptr, CMD_PRIVATE, s,
+                        IsServer(sptr->from) ? sptr->from : 0,
+                        host_mask ? MATCH_HOST : MATCH_SERVER,
+                        "%s :%s", mask, text);
 }
 
 void server_relay_masked_notice(struct Client* sptr, const char* mask, const char* text)
@@ -450,7 +426,9 @@ void server_relay_masked_notice(struct Client* sptr, const char* mask, const cha
     host_mask = 1;
     ++s;
   }
-  sendto_match_butone(sptr->from, sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
-                      ":%s %s %s :%s", sptr->name, MSG_NOTICE, mask, text);
+  sendcmdto_match_butone(sptr, CMD_NOTICE, s,
+                        IsServer(sptr->from) ? sptr->from : 0,
+                        host_mask ? MATCH_HOST : MATCH_SERVER,
+                        "%s :%s", mask, text);
 }
 
index b43bd225cdaa5645dce7bd3f337964cea609c881..f28015de752a4edd130c6e80a21db5877837d4e4 100644 (file)
@@ -78,8 +78,11 @@ int ms_squit(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
   if (BadPtr(parv[parc - 1]))
        comment=sptr->name;
        
-  acptr = FindServer(server);
-  
+  acptr = FindNServer(server);
+
+  if (!acptr)
+    acptr = FindServer(server);
+
   if (!acptr) {
     Debug((DEBUG_NOTICE, "Ignoring SQUIT to an unknown server"));
     return 0;
index 1b9a7066b97d4574a092e7364d77f955014dda3d..8a607a1ca145ca061de03d5048e901dee1800bd5 100644 (file)
@@ -96,7 +96,7 @@ int m_map(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
     parv[1] = "*";
 
   dump_map(sptr, &me, parv[1], 0);
-  sendto_one(sptr, rpl_str(RPL_MAPEND), me.name, parv[0]);
+  sendto_one(sptr, rpl_str(RPL_MAPEND), me.name, parv[0]); /* XXX DEAD */
 
   return 0;
 }
index c147c8f2f73fc492b0cdcdb6cf18ae5fbba44440..45c11ed3e07f01fe284a822653cea3a1da92ed01 100644 (file)
@@ -883,7 +883,7 @@ int parse_client(struct Client *cptr, char *buffer, char *bufend)
    */
   if (!IsUser(cptr) && 0 == (mptr->flags & MFLG_UNREG)) {
     if (0 == (mptr->flags & MFLG_IGNORE))
-      sendto_one(from, ":%s %d * %s :Register first.",
+      sendto_one(from, ":%s %d * %s :Register first.", /* XXX DEAD */
                  me.name, ERR_NOTREGISTERED, ch);
     return -1;
   }
index ede47705478a5e0e9f56f3301a6dcba5c5030407..dbd0f02ab1020f7c9bf3a6e012dc10eb647df8ba 100644 (file)
@@ -32,6 +32,8 @@
 #include "ircd_alloc.h"
 #include "ircd_chattr.h"
 #include "ircd_log.h"
+#include "ircd_reply.h"
+#include "ircd_snprintf.h"
 #include "ircd_string.h"
 #include "list.h"
 #include "listener.h"
@@ -90,7 +92,7 @@ static int is_comment(const char *comment)
 /*
  *  check against a set of time intervals
  */
-static int check_time_interval(char *interval, char *reply)
+static int check_time_interval(char *interval, char *reply, size_t reply_size)
 {
   struct tm* tptr;
   char*      p;
@@ -127,19 +129,18 @@ static int check_time_interval(char *interval, char *reply)
         ? (perm_min <= nowm && nowm <= perm_max)
         : (perm_min <= nowm || nowm <= perm_max))
     {
-      sprintf_irc(reply, ":%%s %%d %%s :%s %d:%02d to %d:%02d.",
-                  "You are not allowed to connect from",
-                  perm_min_hours, perm_min_minutes,
-                  perm_max_hours, perm_max_minutes);
+      ircd_snprintf(0, reply, reply_size, ":You are not allowed to connect "
+                   "from %d:%02d to %d:%02d.", perm_min_hours,
+                   perm_min_minutes, perm_max_hours, perm_max_minutes);
       return (ERR_YOUREBANNEDCREEP);
     }
     if ((perm_min < perm_max)
         ? (perm_min <= nowm + 5 && nowm + 5 <= perm_max)
         : (perm_min <= nowm + 5 || nowm + 5 <= perm_max))
     {
-      sprintf_irc(reply, ":%%s %%d %%s :%d minute%s%s",
-                  perm_min - nowm, (perm_min - nowm) > 1 ? "s " : " ",
-                  "and you will be denied for further access");
+      ircd_snprintf(0, reply, reply_size, ":%d minute%s and you will be "
+                   "denied for further access", perm_min - nowm,
+                   (perm_min - nowm) > 1 ? "s" : "");
       return (ERR_YOUWILLBEBANNED);
     }
     interval = p;
@@ -162,10 +163,9 @@ static void killcomment(struct Client *sptr, char *parv, char *filename)
   struct tm*  tm;
 
   if (NULL == (file = fbopen(filename, "r"))) {
-    sendto_one(sptr, err_str(ERR_NOMOTD), me.name, parv);
-    sendto_one(sptr,
-        ":%s %d %s :Connection from your host is refused on this server.",
-        me.name, ERR_YOUREBANNEDCREEP, parv);
+    send_reply(sptr, ERR_NOMOTD);
+    send_reply(sptr, RPL_EXPLICIT | ERR_YOUREBANNEDCREEP,
+              ":Connection from your host is refused on this server.");
     return;
   }
   fbstat(&sb, file);
@@ -175,14 +175,10 @@ static void killcomment(struct Client *sptr, char *parv, char *filename)
       *tmp = '\0';
     if ((tmp = strchr(line, '\r')))
       *tmp = '\0';
-    /* sendto_one(sptr,
-     * ":%s %d %s : %s.",
-     * me.name, ERR_YOUREBANNEDCREEP, parv,line); */
-    sendto_one(sptr, rpl_str(RPL_MOTD), me.name, parv, line);
+    send_reply(sptr, RPL_MOTD, line);
   }
-  sendto_one(sptr,
-      ":%s %d %s :Connection from your host is refused on this server.",
-      me.name, ERR_YOUREBANNEDCREEP, parv);
+  send_reply(sptr, RPL_EXPLICIT | ERR_YOUREBANNEDCREEP,
+            ":Connection from your host is refused on this server.");
   fbclose(file);
 }
 
@@ -741,11 +737,8 @@ struct ConfItem* find_conf_exact(const char* name, const char* user,
   struct ConfItem *tmp;
   char userhost[USERLEN + HOSTLEN + 3];
 
-  /*
-   * XXX - buffer overflow possible, unchecked variables
-   */
   if (user)
-    sprintf_irc(userhost, "%s@%s", user, host);
+    ircd_snprintf(0, userhost, sizeof(userhost), "%s@%s", user, host);
   else
     ircd_strncpy(userhost, host, sizeof(userhost) - 1);
 
@@ -898,7 +891,8 @@ int rehash(struct Client *cptr, int sig)
   int               found_g = 0;
 
   if (1 == sig)
-    sendto_ops("Got signal SIGHUP, reloading ircd conf. file");
+    sendto_opmask_butone(0, SNO_OLDSNO,
+                        "Got signal SIGHUP, reloading ircd conf. file");
 
   while ((tmp2 = *tmp)) {
     if (tmp2->clients) {
@@ -976,9 +970,10 @@ int rehash(struct Client *cptr, int sig)
                             CONF_HUB | CONF_LEAF | CONF_UWORLD);
       }
       if ((found_g = find_kill(acptr))) {
-        sendto_op_mask(found_g == -2 ? SNO_GLINE : SNO_OPERKILL,
-            found_g == -2 ? "G-line active for %s" : "K-line active for %s",
-            get_client_name(acptr, HIDE_IP));
+        sendto_opmask_butone(0, found_g == -2 ? SNO_GLINE : SNO_OPERKILL,
+                            found_g == -2 ? "G-line active for %s" :
+                            "K-line active for %s",
+                            get_client_name(acptr, HIDE_IP));
         if (exit_client(cptr, acptr, &me, found_g == -2 ? "G-lined" :
             "K-lined") == CPTR_KILLED)
           ret = CPTR_KILLED;
@@ -1252,7 +1247,7 @@ int conf_init(void)
         len += strlen(aconf->host);
         newhost = (char*) MyMalloc(len);
         assert(0 != newhost);
-        sprintf_irc(newhost, "*@%s", aconf->host);
+       ircd_snprintf(0, newhost, len, "*@%s", aconf->host);
         MyFree(aconf->host);
         aconf->host = newhost;
       }
@@ -1413,24 +1408,20 @@ int find_kill(struct Client *cptr)
         break;
       else if (is_comment(tmp->passwd))
         break;
-      else if (check_time_interval(tmp->passwd, reply))
+      else if (check_time_interval(tmp->passwd, reply, sizeof(reply)))
         break;
     }
   }
   if (reply[0])
-    sendto_one(cptr, reply, me.name, ERR_YOUREBANNEDCREEP, cptr->name);
+    send_reply(cptr, RPL_EXPLICIT | ERR_YOUREBANNEDCREEP, reply);
   else if (tmp) {
     if (EmptyString(tmp->passwd))
-      sendto_one(cptr,
-          ":%s %d %s :Connection from your host is refused on this server.",
-          me.name, ERR_YOUREBANNEDCREEP, cptr->name);
+      send_reply(cptr, RPL_EXPLICIT | ERR_YOUREBANNEDCREEP,
+                ":Connection from your host is refused on this server.");
     else {
       if (*tmp->passwd == '"') {
-        char *sbuf =
-            sprintf_irc(sendbuf, ":%s %d %s :%s", me.name, ERR_YOUREBANNEDCREEP,
-            cptr->name, &tmp->passwd[1]);
-        sbuf[-1] = '.';                /* Overwrite last quote with a dot */
-        sendbufto_one(cptr);
+       send_reply(cptr, RPL_EXPLICIT | ERR_YOUREBANNEDCREEP, ":%*s.",
+                  strlen(tmp->passwd + 1) - 1, tmp->passwd + 1);
       }
       else if (*tmp->passwd == '!')
         killcomment(cptr, cptr->name, &tmp->passwd[1]);
@@ -1438,8 +1429,8 @@ int find_kill(struct Client *cptr)
 #ifdef COMMENT_IS_FILE
         killcomment(cptr, cptr->name, tmp->passwd);
 #else
-        sendto_one(cptr, ":%s %d %s :%s.", me.name, ERR_YOUREBANNEDCREEP,
-            cptr->name, tmp->passwd);
+       send_reply(cptr, RPL_EXPLICIT | ERR_YOUREBANNEDCREEP, ":%s.",
+                  tmp->passwd);
 #endif
     }
   }
@@ -1447,8 +1438,8 @@ int find_kill(struct Client *cptr)
   /* find active glines */
   /* added a check against the user's IP address to find_gline() -Kev */
   else if ((agline = gline_lookup(cptr)) && GlineIsActive(agline))
-    sendto_one(cptr, ":%s %d %s :%s.", me.name, ERR_YOUREBANNEDCREEP,
-              cptr->name, GlineReason(agline));
+    send_reply(cptr, RPL_EXPLICIT | ERR_YOUREBANNEDCREEP, ":%s.",
+              GlineReason(agline));
   else
     agline = NULL;                /* if a gline was found, it was inactive */
 
@@ -1548,7 +1539,8 @@ int conf_check_server(struct Client *cptr)
   if (IsConnecting(cptr) || IsHandshake(cptr)) {
     c_conf = find_conf_byname(lp, cptr->name, CONF_SERVER);
     if (!c_conf) {
-      sendto_ops("Connect Error: lost C:line for %s", cptr->name);
+      sendto_opmask_butone(0, SNO_OLDSNO, "Connect Error: lost C:line for %s",
+                          cptr->name);
       det_confs_butmask(cptr, 0);
       return -1;
     }
index 6564e0bcb7f9351d3f688706eae51f4c3fba73b9..8d568b4db1033174c7a2ee7c9d839343aae76e2a 100644 (file)
@@ -428,7 +428,7 @@ int exit_client(struct Client *cptr,    /* Connection being handled by
         && IsClient(victim))    /* Not a Ping struct or Log file */
     {
       if (IsServer(victim) || IsHandshake(victim))
-       sendcmdto_one(killer, CMD_SQUIT, victim, "%C 0 :%s", &me, comment);
+       sendcmdto_one(killer, CMD_SQUIT, victim, "%s 0 :%s", me.name, comment);
       else if (!IsConnecting(victim)) {
         if (!IsDead(victim))
          sendrawto_one(victim, MSG_ERROR " :Closing Link: %s by %s (%s)",
@@ -496,8 +496,8 @@ int exit_client(struct Client *cptr,    /* Connection being handled by
   for (dlp = me.serv->down; dlp; dlp = dlp->next) {
     if (dlp->value.cptr != killer->from && dlp->value.cptr != victim) {
       if (IsServer(victim))
-       sendcmdto_one(killer, CMD_SQUIT, dlp->value.cptr, "%C %Tu :%s",
-                     victim, victim->serv->timestamp, comment);
+       sendcmdto_one(killer, CMD_SQUIT, dlp->value.cptr, "%s %Tu :%s",
+                     victim->name, victim->serv->timestamp, comment);
       else if (IsUser(victim) && 0 == (victim->flags & FLAGS_KILLED))
        sendcmdto_one(victim, CMD_QUIT, dlp->value.cptr, ":%s", comment);
     }
index a343e5da73e304eed94ae0a94731e7d23a074745..870b2e4381e30e56931efc8c33cb690dc899dcdb 100644 (file)
@@ -73,7 +73,7 @@ int exit_new_server(struct Client* cptr, struct Client* sptr,
     return vexit_client_msg(cptr, cptr, &me, fmt, vl);
   sprintf_irc(buf, ":%s " TOK_SQUIT " %s " TIME_T_FMT " :", me.name, host, timestamp);
   strcat(buf, fmt);
-  vsendto_one(cptr, buf, vl);
+  vsendto_one(cptr, buf, vl); /* XXX DEAD */
   va_end(vl);
   MyFree(buf);
   return 0;
index 4c37675f20233a750aaef74aab6da0ebc1b005d6..251ce2c6aed4c853b0427f99bd3f08549b59205c 100644 (file)
@@ -127,25 +127,20 @@ void report_configured_links(struct Client *sptr, int mask)
        */
       /* Special-case 'k' or 'K' lines as appropriate... -Kev */
       if ((tmp->status & CONF_KLINE))
-        sendto_one(sptr, rpl_str(p[1]), me.name,
-            sptr->name, c, host, pass, name, port, get_conf_class(tmp));
+       send_reply(sptr, p[1], c, host, pass, name, port, get_conf_class(tmp));
       /*
        * connect rules are classless
        */
       else if ((tmp->status & CONF_CRULE))
-        sendto_one(sptr, rpl_str(p[1]), me.name, sptr->name, c, host, name);
+       send_reply(sptr, p[1], c, host, name);
       else if ((tmp->status & CONF_TLINES))
-        sendto_one(sptr, rpl_str(p[1]), me.name, sptr->name, c, host, pass);
+       send_reply(sptr, p[1], c, host, pass);
       else if ((tmp->status & CONF_UWORLD))
-        sendto_one(sptr, rpl_str(p[1]),
-            me.name, sptr->name, c, host, pass, name, port,
-            get_conf_class(tmp));
+       send_reply(sptr, p[1], c, host, pass, name, port, get_conf_class(tmp));
       else if ((tmp->status & (CONF_SERVER | CONF_HUB)))
-        sendto_one(sptr, rpl_str(p[1]), me.name, sptr->name, c, "*", name,
-            port, get_conf_class(tmp));
+       send_reply(sptr, p[1], c, "*", name, port, get_conf_class(tmp));
       else
-        sendto_one(sptr, rpl_str(p[1]), me.name, sptr->name, c, host, name,
-            port, get_conf_class(tmp));
+       send_reply(sptr, p[1], c, host, name, port, get_conf_class(tmp));
     }
   }
 }
index cca7606d97f8306ee16e23a54936e7b8ec46ab5b..7bd0a9c0abac8b91e63c855adaa3fcbc837daf1d 100644 (file)
@@ -913,7 +913,7 @@ int check_target_limit(struct Client *sptr, void *target, const char *name,
     else {
 #ifdef GODMODE
       /* XXX Let's get rid of GODMODE */
-      sendto_one(sptr, ":%s NOTICE %s :New target: %s; ft " TIME_T_FMT,
+      sendto_one(sptr, ":%s NOTICE %s :New target: %s; ft " TIME_T_FMT, /* XXX Possibly DEAD */
           me.name, sptr->name, name, (CurrentTime - sptr->nexttarget) / TARGET_DELAY);
 #endif
       sptr->nexttarget += TARGET_DELAY;
index 347333ef6163b68ca40135a9e34a425b3e5818a9..09792e2bb7ac8ddc53713bb1e46654906350c3b9 100644 (file)
@@ -86,7 +86,7 @@ static void dead_link(struct Client *to, char *notice)
   ircd_strncpy(to->info, notice, REALLEN);
 
   if (!IsUser(to) && !IsUnknown(to) && !(to->flags & FLAGS_CLOSING))
-    sendto_ops("%s for %s", to->info, to->name);
+    sendto_opmask_butone(0, SNO_OLDSNO, "%s for %s", to->info, to->name);
   Debug((DEBUG_ERROR, to->info));
 }
 
@@ -234,8 +234,9 @@ void send_buffer(struct Client* to, char* buf)
 
   if (DBufLength(&to->sendQ) > get_sendq(to)) {
     if (IsServer(to))
-      sendto_ops("Max SendQ limit exceeded for %s: " SIZE_T_FMT " > " SIZE_T_FMT,
-                 to->name, DBufLength(&to->sendQ), get_sendq(to));
+      sendto_opmask_butone(0, SNO_OLDSNO, "Max SendQ limit exceeded for %C: "
+                          "%zu > %zu", to, DBufLength(&to->sendQ),
+                          get_sendq(to));
     dead_link(to, "Max sendQ exceeded");
     return;
   }
@@ -1026,6 +1027,8 @@ void vsendcmdto_one(struct Client *from, const char *cmd, const char *tok,
   struct VarData vd;
   char sndbuf[IRC_BUFSIZE];
 
+  to = to->from;
+
   vd.vd_format = pattern; /* set up the struct VarData for %v */
   vd.vd_args = vl;
 
@@ -1192,9 +1195,10 @@ void sendcmdto_channel_butone(struct Client *from, const char *cmd,
        (skip & SKIP_DEAF && IsDeaf(member->user)) ||
        (skip & SKIP_NONOPS && !IsChanOp(member)) ||
        (skip & SKIP_BURST && IsBurstOrBurstAck(member->user->from)) ||
-       member->user->from->fd < -1 ||
+       member->user->from->fd < 0 ||
        sentalong[member->user->from->fd] == sentalong_marker)
       continue;
+    sentalong[member->user->from->fd] = sentalong_marker;
 
     if (MyConnect(member->user)) /* pick right buffer to send */
       send_buffer(member->user, userbuf);
@@ -1245,6 +1249,7 @@ void sendcmdto_flag_butone(struct Client *from, const char *cmd,
     if (cptr->from == one || IsServer(cptr) || !(cptr->flags & flag) ||
        cptr->from->fd < 0 || sentalong[cptr->from->fd] == sentalong_marker)
       continue; /* skip it */
+    sentalong[cptr->from->fd] = sentalong_marker;
 
     if (MyConnect(cptr)) /* send right buffer */
       send_buffer(cptr, userbuf);
@@ -1296,9 +1301,11 @@ void sendcmdto_match_butone(struct Client *from, const char *cmd,
   /* send buffer along */
   sentalong_marker++;
   for (cptr = GlobalClientList; cptr; cptr = cptr->next) {
-    if (cptr->from == one || IsServer(cptr) || !match_it(cptr, to, who) ||
-       cptr->from->fd < 0 || sentalong[cptr->from->fd] == sentalong_marker)
+    if (cptr->from == one || IsServer(cptr) || IsMe(cptr) ||
+       !match_it(cptr, to, who) || cptr->from->fd < 0 ||
+       sentalong[cptr->from->fd] == sentalong_marker)
       continue; /* skip it */
+    sentalong[cptr->from->fd] = sentalong_marker;
 
     if (MyConnect(cptr)) /* send right buffer */
       send_buffer(cptr, userbuf);