Jelajahi Sumber

* Fix cases where callerid was not tracked as being set

Bryan Drewery 16 tahun lalu
induk
melakukan
4419ad24ff
4 mengubah file dengan 7 tambahan dan 3 penghapusan
  1. 1 0
      src/mod/server.mod/server.c
  2. 1 1
      src/mod/server.mod/server.h
  3. 3 2
      src/mod/server.mod/servmsg.c
  4. 2 0
      src/set.c

+ 1 - 0
src/mod/server.mod/server.c

@@ -101,6 +101,7 @@ size_t nick_len = 9;			/* Maximal nick length allowed on the network. */
 char deaf_char = 0;
 bool deaf_set = 0;
 char callerid_char = 0;
+bool in_callerid = 0;
 
 static bool double_mode = 0;		/* allow a msgs to be twice in a queue? */
 static bool double_server = 0;

+ 1 - 1
src/mod/server.mod/server.h

@@ -46,7 +46,7 @@ enum {
 
 extern bind_table_t	*BT_ctcp, *BT_ctcr, *BT_msgc;
 extern size_t		nick_len;
-extern bool		trigger_on_ignore, floodless, keepnick, deaf_set;
+extern bool		trigger_on_ignore, floodless, keepnick, deaf_set, in_callerid;
 extern int 		servidx, ctcp_mode, answer_ctcp, serv, curserv, default_alines;
 extern unsigned int     rolls;
 extern port_t		default_port, newserverport, curservport;

+ 3 - 2
src/mod/server.mod/servmsg.c

@@ -316,8 +316,10 @@ got005(char *from, char *msg)
       }
     } else if (!strcasecmp(tmp, "CALLERID")) {
       callerid_char = p ? p[0] : 'g';
-      if (use_callerid)
+      if (use_callerid) {
         dprintf(DP_SERVER, "MODE %s +%c\n", botname, callerid_char);
+        in_callerid = 1;
+      }
     } else if (!strcasecmp(tmp, "EXCEPTS"))
       use_exempts = 1;
     else if (!strcasecmp(tmp, "INVEX"))
@@ -400,7 +402,6 @@ static char lastmsghost[FLOOD_GLOBAL_MAX][128];
 static time_t lastmsgtime[FLOOD_GLOBAL_MAX];
 static int dronemsgs;
 static time_t dronemsgtime;
-static bool in_callerid = 0;
 static interval_t flood_callerid_time = 60;
 
 rate_t flood_callerid = { 6, 2 };

+ 2 - 0
src/set.c

@@ -289,6 +289,8 @@ sdprintf("var (mem): %s -> %s", var->name, datain ? datain : "(NULL)");
           char mode_char = strcmp(var->name, "deaf") == 0 ? deaf_char : callerid_char;
           if (mode_char == deaf_char)
             deaf_set = num;
+          else if (mode_char == callerid_char)
+            in_callerid = num;
           dprintf(DP_SERVER, "MODE %s %c%c\n", botname, which, mode_char);
         }
       }