From a191df786d0412e5de7f40be580e090596a3fe72 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 19 Feb 2001 04:50:58 +0000 Subject: [PATCH] /RECONNECT ALL - reconnects to all servers in reconnection queue git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1253 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- src/core/servers-reconnect.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/core/servers-reconnect.c b/src/core/servers-reconnect.c index bb8b0b45..147f6436 100644 --- a/src/core/servers-reconnect.c +++ b/src/core/servers-reconnect.c @@ -293,6 +293,32 @@ static RECONNECT_REC *reconnect_find_tag(int tag) return NULL; } +static void reconnect_all(void) +{ + GSList *list; + SERVER_CONNECT_REC *conn; + RECONNECT_REC *rec; + + /* first move reconnects to another list so if server_connect() + fails and goes to reconnection list again, we won't get stuck + here forever */ + list = NULL; + while (reconnects != NULL) { + rec = reconnects->data; + + list = g_slist_append(list, rec->conn); + server_reconnect_destroy(rec, FALSE); + } + + + while (list != NULL) { + conn = list->data; + + CHAT_PROTOCOL(conn)->server_connect(conn); + list = g_slist_remove(list, conn); + } +} + /* SYNTAX: RECONNECT */ static void cmd_reconnect(const char *data, SERVER_REC *server) { @@ -315,6 +341,12 @@ static void cmd_reconnect(const char *data, SERVER_REC *server) return; } + if (g_strcasecmp(data, "all") == 0) { + /* reconnect all servers in reconnect queue */ + reconnect_all(); + return; + } + if (*data == '\0') { /* reconnect to first server in reconnection list */ if (reconnects == NULL)