Просмотр исходного кода

* Updates to which server name is displayed, and tracking properly for auto-jumping

Bryan Drewery 16 лет назад
Родитель
Сommit
6579325183
4 измененных файлов с 8 добавлено и 9 удалено
  1. 2 6
      src/chanprog.c
  2. 4 1
      src/misc.c
  3. 1 1
      src/mod/server.mod/server.c
  4. 1 1
      src/mod/server.mod/server.h

+ 2 - 6
src/chanprog.c

@@ -995,11 +995,7 @@ void check_removed_server() {
         // ie, irc.sucks.net -> irc.servercentral.net (expected (dcc) -> real (cursrvname))
         // ie, irc.sucks.net -> irc.servercentral.net (expected (dcc) -> real (cursrvname))
       } else if (servidx != -1 && ((n->port && n->port == dcc[servidx].port) || (!n->port && default_port == dcc[servidx].port)) &&
       } else if (servidx != -1 && ((n->port && n->port == dcc[servidx].port) || (!n->port && default_port == dcc[servidx].port)) &&
           !strcmp(n->name, dcc[servidx].host)) {
           !strcmp(n->name, dcc[servidx].host)) {
-        found_server = 1;
-
-        // Update to this server
-        curserv = -1;
-        next_server(&curserv, dcc[servidx].host, &curservport, NULL);
+        found_server = 2;
         break;
         break;
       }
       }
     }
     }
@@ -1012,7 +1008,7 @@ void check_removed_server() {
     } else {
     } else {
       // Update current server in list.
       // Update current server in list.
       curserv = -1;
       curserv = -1;
-      next_server(&curserv, cursrvname, &curservport, NULL);
+      next_server(&curserv, found_server == 1 ? cursrvname : dcc[servidx].host, &curservport, NULL);
     }
     }
   }
   }
 }
 }

+ 4 - 1
src/misc.c

@@ -652,6 +652,8 @@ readsocks(const char *fname)
       online_since = strtol(str.c_str(), NULL, 10);
       online_since = strtol(str.c_str(), NULL, 10);
     else if (type == STR("+server_online"))
     else if (type == STR("+server_online"))
       server_online = strtol(str.c_str(), NULL, 10);
       server_online = strtol(str.c_str(), NULL, 10);
+    else if (type == STR("+cursrvname"))
+      strlcpy(cursrvname, str.c_str(), sizeof(cursrvname));
     else if (type == STR("+server_floodless"))
     else if (type == STR("+server_floodless"))
       floodless = 1;
       floodless = 1;
     else if (type == STR("+in_deaf"))
     else if (type == STR("+in_deaf"))
@@ -726,7 +728,7 @@ readsocks(const char *fname)
       keepnick = 0; /* Wait to change nicks until relinking, fixes nick/jupenick switching issues during restart */
       keepnick = 0; /* Wait to change nicks until relinking, fixes nick/jupenick switching issues during restart */
       reset_flood();
       reset_flood();
       if (!server_online) server_online = now;
       if (!server_online) server_online = now;
-      rehash_server(dcc[servidx].host, nick);
+      rehash_server(cursrvname[0] ? cursrvname : dcc[servidx].host, nick);
       if (cached_005)
       if (cached_005)
         replay_cache(servidx, NULL);
         replay_cache(servidx, NULL);
       else
       else
@@ -800,6 +802,7 @@ restart(int idx)
     if (my_cookie_counter)
     if (my_cookie_counter)
       stream << buf.printf(STR("+my_cookie_counter %lu\n"), my_cookie_counter);
       stream << buf.printf(STR("+my_cookie_counter %lu\n"), my_cookie_counter);
     stream << buf.printf(STR("+server_online %li\n"), server_online);
     stream << buf.printf(STR("+server_online %li\n"), server_online);
+    stream << buf.printf(STR("+cursrvname %s\n"), cursrvname);
   }
   }
   stream << buf.printf(STR("+online_since %li\n"), online_since);
   stream << buf.printf(STR("+online_since %li\n"), online_since);
   if (floodless)
   if (floodless)

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

@@ -1123,7 +1123,7 @@ void server_report(int idx, int details)
     }
     }
   }
   }
   if ((trying_server || server_online) && (servidx != (-1))) {
   if ((trying_server || server_online) && (servidx != (-1))) {
-    dprintf(idx, "    Server %s:%d %s\n", dcc[servidx].host, dcc[servidx].port,
+    dprintf(idx, "    Server %s:%d %s\n", cursrvname, dcc[servidx].port,
 	    trying_server ? "(trying)" : s);
 	    trying_server ? "(trying)" : s);
   } else
   } else
     dprintf(idx, "    No server currently.\n");
     dprintf(idx, "    No server currently.\n");

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

@@ -53,7 +53,7 @@ extern unsigned int     rolls;
 extern port_t		default_port, newserverport, curservport;
 extern port_t		default_port, newserverport, curservport;
 extern time_t		server_online, tried_jupenick, tried_nick, release_time, connect_bursting;
 extern time_t		server_online, tried_jupenick, tried_nick, release_time, connect_bursting;
 extern interval_t	cycle_time;
 extern interval_t	cycle_time;
-extern char		cursrvname[], botrealname[121], botuserhost[], ctcp_reply[1024],
+extern char		cursrvname[120], botrealname[121], botuserhost[], ctcp_reply[1024],
 			newserver[], newserverpass[], curnetwork[], botuserip[], altnick_char, deaf_char, callerid_char;
 			newserver[], newserverpass[], curnetwork[], botuserip[], altnick_char, deaf_char, callerid_char;
 extern struct server_list *serverlist;
 extern struct server_list *serverlist;
 extern struct dcc_table SERVER_SOCKET;
 extern struct dcc_table SERVER_SOCKET;