Kaynağa Gözat

* Add the server to serverlist on soft_restart

svn: 2129
Bryan Drewery 21 yıl önce
ebeveyn
işleme
b493d82dca

+ 5 - 0
src/misc.c

@@ -602,6 +602,11 @@ readsocks(const char *fname)
   unlink(fname);
   fclose(f);
   if (servidx >= 0) {
+    char nserv[50] = "";
+
+    simple_snprintf(nserv, sizeof(nserv), "%s:%d", dcc[servidx].host, dcc[servidx].port);
+    add_server(nserv);
+    curserv = 0;
     rehash_server(dcc[servidx].host, nick);
     dprintf(DP_DUMP, "VERSION\n");
     reset_chans = 1;

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

@@ -37,7 +37,8 @@ port_t newserverport = 0;		/* new server port? */
 char newserverpass[121] = "";	/* new server password? */
 static char serverpass[121] = "";
 static time_t trying_server;	/* trying to connect to a server right now? */
-static int curserv = 999;		/* current position in server list: */
+int curserv = 999;		/* current position in server list: */
+port_t curservport = 0;
 int flud_thr = 5;		/* msg flood threshold */
 time_t flud_time = 60;		/* msg flood time */
 int flud_ctcp_thr = 3;	/* ctcp flood threshold */
@@ -79,7 +80,6 @@ static bool double_help = 0;
 static bool double_warned = 0;
 
 static void empty_msgq(void);
-static void next_server(int *, char *, port_t *, char *);
 static void disconnect_server(int, int);
 static int calc_penalty(char *);
 static bool fast_deq(int);
@@ -703,7 +703,7 @@ void clearq(struct server_list *xx)
  *
  * -> if (*ptr == -1) then jump to that particular server
  */
-static void next_server(int *ptr, char *servname, port_t *port, char *pass)
+void next_server(int *ptr, char *servname, port_t *port, char *pass)
 {
   struct server_list *x = serverlist;
 

+ 3 - 2
src/mod/server.mod/server.h

@@ -46,8 +46,8 @@ enum {
 extern bind_table_t	*BT_ctcp, *BT_ctcr, *BT_msgc;
 extern size_t		nick_len;
 extern bool		quiet_reject, trigger_on_ignore, floodless;
-extern int 		servidx, ctcp_mode, flud_thr, flud_ctcp_thr, answer_ctcp, serv;
-extern port_t		default_port, newserverport;
+extern int 		servidx, ctcp_mode, flud_thr, flud_ctcp_thr, answer_ctcp, serv, curserv;
+extern port_t		default_port, newserverport, curservport;
 extern time_t		server_online, cycle_time, flud_time, flud_ctcp_time;
 extern char		cursrvname[], botrealname[121], botuserhost[], ctcp_reply[],
 			newserver[], newserverpass[], curnetwork[], botuserip[];
@@ -70,3 +70,4 @@ bool match_my_nick(char *);
 void rehash_server(const char *, const char *);
 void join_chans();
 void check_hostmask();
+void next_server(int *, char *, port_t *, char *);

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

@@ -148,6 +148,8 @@ void rehash_server(const char *servname, const char *nick)
   server_online = now;
   altnick_char = 0;
   strlcpy(cursrvname, servname, sizeof(cursrvname));
+  if (servidx >= 0)
+    curservport = dcc[servidx].port;
 
   if (nick && nick[0]) {
     strlcpy(botname, nick, NICKLEN);