Przeglądaj źródła

* Only set deaf/callerid if not already in them

Bryan Drewery 16 lat temu
rodzic
commit
a9021b3cd0
1 zmienionych plików z 6 dodań i 4 usunięć
  1. 6 4
      src/mod/server.mod/servmsg.c

+ 6 - 4
src/mod/server.mod/servmsg.c

@@ -310,13 +310,13 @@ got005(char *from, char *msg)
       use_354 = 1;
     else if (!strcasecmp(tmp, "DEAF")) {
       deaf_char = p ? p[0] : 'D';
-      if (use_deaf) {
+      if (use_deaf && !deaf_set) {
         dprintf(DP_SERVER, "MODE %s +%c\n", botname, deaf_char);
         deaf_set = 1;
       }
     } else if (!strcasecmp(tmp, "CALLERID")) {
       callerid_char = p ? p[0] : 'g';
-      if (use_callerid) {
+      if (use_callerid && !in_callerid) {
         dprintf(DP_SERVER, "MODE %s +%c\n", botname, callerid_char);
         in_callerid = 1;
       }
@@ -408,8 +408,10 @@ rate_t flood_callerid = { 6, 2 };
 
 void unset_callerid(int data)
 {
-  dprintf(DP_MODE, "MODE %s :-%c\n", botname, callerid_char);
-  in_callerid = 0;
+  if (in_callerid) {
+    dprintf(DP_MODE, "MODE %s :-%c\n", botname, callerid_char);
+    in_callerid = 0;
+  }
 }
 
 /* Do on NICK, PRIVMSG, NOTICE and JOIN.