Procházet zdrojové kódy

* Fix connect bursting not properly getting cleaned up on reconnect

Bryan Drewery před 16 roky
rodič
revize
f15540a329
2 změnil soubory, kde provedl 12 přidání a 4 odebrání
  1. 9 3
      src/mod/server.mod/server.c
  2. 3 1
      src/mod/server.mod/servmsg.c

+ 9 - 3
src/mod/server.mod/server.c

@@ -970,6 +970,14 @@ static void dcc_chat_hostresolved(int i)
  *     Server timer functions
  */
 
+static void end_burstmode() {
+  if (connect_bursting) {
+    connect_bursting = 0;
+    msgburst = real_msgburst;
+    msgrate = real_msgrate;
+  }
+}
+
 static void server_secondly()
 {
   if (cycle_time)
@@ -978,9 +986,7 @@ static void server_secondly()
     connect_server();
 
   if (connect_bursting && server_online && (now - SERVER_CONNECT_BURST_TIME) >= connect_bursting) {
-    connect_bursting = 0;
-    msgburst = real_msgburst;
-    msgrate = real_msgrate;
+    end_burstmode();
     putlog(LOG_DEBUG, "*", "Ending server burst mode");
   }
 }

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

@@ -1148,6 +1148,7 @@ static int gotmode(char *from, char *msg)
   return 0;
 }
 
+static void end_burstmode();
 
 static void disconnect_server(int idx, int dolost)
 {
@@ -1169,6 +1170,7 @@ static void disconnect_server(int idx, int dolost)
     trying_server = 0;
     lostdcc(idx);
   }
+  end_burstmode();
 
   /* Invalidate the cmd_swhois cache callback data */
   for (int i = 0; i < dcc_total; i++) {
@@ -1814,7 +1816,7 @@ static void server_dns_callback(int id, void *client_data, const char *host, bd:
     // Just connecting, set last queue time to the past.
     last_time.sec = now - 100;
     last_time.usec = 0;
-    connect_bursting = 0;
+    end_burstmode();
     real_msgburst = msgburst;
     real_msgrate = msgrate;