Fix crash after /upgrade with IRC servers connected via SSL (bug #25398)

We force disconnection of IRC servers connected via SSL, and schedule
reconnection to server after WeeChat restart.
This commit is contained in:
Sebastien Helleu 2009-01-30 14:24:54 +01:00
parent 7ec4d05d2f
commit b5534e6e05
8 changed files with 159 additions and 15 deletions

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-01-28 13:54+0100\n"
"POT-Creation-Date: 2009-01-30 14:15+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -1871,8 +1871,11 @@ msgstr "Obdržen signál %s, ukončuji WeeChat.."
msgid "Signal SIGHUP received, reloading configuration files"
msgstr "%s selhalo uložení konfiguračního souboru\n"
#, fuzzy
msgid "server"
msgstr "server"
msgid_plural "servers"
msgstr[0] "server"
msgstr[1] "server"
#, c-format
msgid ""
@ -2334,6 +2337,18 @@ msgstr ""
msgid "Lag"
msgstr ""
#, c-format
msgid ""
"%s%s: disconnecting from server because upgrade can't work for servers "
"connected via SSL"
msgstr ""
#. TRANSLATORS: %s after %d is "server" or "servers"
#, c-format
msgid ""
"%s%s: disconnected from %d %s (SSL connection not supported with upgrade)"
msgstr ""
#, fuzzy, c-format
msgid "%s%s: error with server from URL (\"%s\"), ignored"
msgstr "%s nevalidní syntaxe pro IRC server ('%s'), ignorován\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-01-28 13:54+0100\n"
"POT-Creation-Date: 2009-01-30 14:15+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Thomas Schuetz <i18n@internet-villa.de>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -1890,8 +1890,11 @@ msgstr ""
msgid "Signal SIGHUP received, reloading configuration files"
msgstr "%s konnte die Konfigurationsdatei nicht sichern\n"
#, fuzzy
msgid "server"
msgstr "Server"
msgid_plural "servers"
msgstr[0] "Server"
msgstr[1] "Server"
#, c-format
msgid ""
@ -2342,6 +2345,18 @@ msgstr ""
msgid "Lag"
msgstr ""
#, c-format
msgid ""
"%s%s: disconnecting from server because upgrade can't work for servers "
"connected via SSL"
msgstr ""
#. TRANSLATORS: %s after %d is "server" or "servers"
#, c-format
msgid ""
"%s%s: disconnected from %d %s (SSL connection not supported with upgrade)"
msgstr ""
# ???
#, fuzzy, c-format
msgid "%s%s: error with server from URL (\"%s\"), ignored"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-01-28 13:54+0100\n"
"POT-Creation-Date: 2009-01-30 14:15+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -1869,8 +1869,11 @@ msgstr ""
msgid "Signal SIGHUP received, reloading configuration files"
msgstr "%s falló al salvar el archivo de configuración\n"
#, fuzzy
msgid "server"
msgstr "servidor"
msgid_plural "servers"
msgstr[0] "servidor"
msgstr[1] "servidor"
#, c-format
msgid ""
@ -2317,6 +2320,18 @@ msgstr ""
msgid "Lag"
msgstr ""
#, c-format
msgid ""
"%s%s: disconnecting from server because upgrade can't work for servers "
"connected via SSL"
msgstr ""
#. TRANSLATORS: %s after %d is "server" or "servers"
#, c-format
msgid ""
"%s%s: disconnected from %d %s (SSL connection not supported with upgrade)"
msgstr ""
#, fuzzy, c-format
msgid "%s%s: error with server from URL (\"%s\"), ignored"
msgstr "%s sintaxis inválida para el servidor IRC ('%s'), ignorado\n"

View File

@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-01-28 13:54+0100\n"
"PO-Revision-Date: 2009-01-28 13:54+0100\n"
"POT-Creation-Date: 2009-01-30 14:15+0100\n"
"PO-Revision-Date: 2009-01-30 14:14+0100\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"MIME-Version: 1.0\n"
@ -1967,7 +1967,9 @@ msgid "Signal SIGHUP received, reloading configuration files"
msgstr "Signal SIGHUP reçu, rechargement des fichiers de configuration"
msgid "server"
msgstr "serveur"
msgid_plural "servers"
msgstr[0] "serveur"
msgstr[1] "serveurs"
#, c-format
msgid ""
@ -2434,6 +2436,21 @@ msgstr "absent"
msgid "Lag"
msgstr "Lag"
#, c-format
msgid ""
"%s%s: disconnecting from server because upgrade can't work for servers "
"connected via SSL"
msgstr ""
"%s%s: déconnexion du serveur car la mise à jour ne peut pas fonctionner avec "
"les serveurs connectés via SSL"
#. TRANSLATORS: %s after %d is "server" or "servers"
#, c-format
msgid ""
"%s%s: disconnected from %d %s (SSL connection not supported with upgrade)"
msgstr ""
"%s%s: déconnecté de %d %s (connexion SSL non supportée avec la mise à jour)"
#, c-format
msgid "%s%s: error with server from URL (\"%s\"), ignored"
msgstr "%s%s: erreur avec le serveur de l'URL (\"%s\"), ignoré"

View File

@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-01-28 13:54+0100\n"
"POT-Creation-Date: 2009-01-30 14:15+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -1901,8 +1901,11 @@ msgstr ""
msgid "Signal SIGHUP received, reloading configuration files"
msgstr "%s nem sikerült a konfigurációs fájlt elmenteni\n"
#, fuzzy
msgid "server"
msgstr "szerver"
msgid_plural "servers"
msgstr[0] "szerver"
msgstr[1] "szerver"
#, c-format
msgid ""
@ -2351,6 +2354,18 @@ msgstr ""
msgid "Lag"
msgstr ""
#, c-format
msgid ""
"%s%s: disconnecting from server because upgrade can't work for servers "
"connected via SSL"
msgstr ""
#. TRANSLATORS: %s after %d is "server" or "servers"
#, c-format
msgid ""
"%s%s: disconnected from %d %s (SSL connection not supported with upgrade)"
msgstr ""
#, fuzzy, c-format
msgid "%s%s: error with server from URL (\"%s\"), ignored"
msgstr "%s érvénytelen szintaxis az IRC szervernek ('%s'), mellőzve\n"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-01-28 13:54+0100\n"
"POT-Creation-Date: 2009-01-30 14:15+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -1903,8 +1903,11 @@ msgstr ""
msgid "Signal SIGHUP received, reloading configuration files"
msgstr "%s не могу сохранить конфигурационный файл\n"
#, fuzzy
msgid "server"
msgstr "сервер"
msgid_plural "servers"
msgstr[0] "сервер"
msgstr[1] "сервер"
#, c-format
msgid ""
@ -2355,6 +2358,18 @@ msgstr ""
msgid "Lag"
msgstr ""
#, c-format
msgid ""
"%s%s: disconnecting from server because upgrade can't work for servers "
"connected via SSL"
msgstr ""
#. TRANSLATORS: %s after %d is "server" or "servers"
#, c-format
msgid ""
"%s%s: disconnected from %d %s (SSL connection not supported with upgrade)"
msgstr ""
#, fuzzy, c-format
msgid "%s%s: error with server from URL (\"%s\"), ignored"
msgstr "%s некорректный синтаксис IRC сервра ('%s'), игнорируется\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-01-28 13:54+0100\n"
"POT-Creation-Date: 2009-01-30 14:15+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1610,7 +1610,9 @@ msgid "Signal SIGHUP received, reloading configuration files"
msgstr ""
msgid "server"
msgstr ""
msgid_plural "servers"
msgstr[0] ""
msgstr[1] ""
#, c-format
msgid ""
@ -2020,6 +2022,18 @@ msgstr ""
msgid "Lag"
msgstr ""
#, c-format
msgid ""
"%s%s: disconnecting from server because upgrade can't work for servers "
"connected via SSL"
msgstr ""
#. TRANSLATORS: %s after %d is "server" or "servers"
#, c-format
msgid ""
"%s%s: disconnected from %d %s (SSL connection not supported with upgrade)"
msgstr ""
#, c-format
msgid "%s%s: error with server from URL (\"%s\"), ignored"
msgstr ""

View File

@ -25,6 +25,7 @@
#include "../weechat-plugin.h"
#include "irc.h"
#include "irc-bar-item.h"
#include "irc-buffer.h"
#include "irc-command.h"
#include "irc-completion.h"
#include "irc-config.h"
@ -86,6 +87,9 @@ int
irc_signal_upgrade_cb (void *data, const char *signal, const char *type_data,
void *signal_data)
{
struct t_irc_server *ptr_server;
int disconnected;
/* make C compiler happy */
(void) data;
(void) signal;
@ -94,6 +98,40 @@ irc_signal_upgrade_cb (void *data, const char *signal, const char *type_data,
irc_signal_upgrade_received = 1;
/* FIXME: it's not possible to upgrade with SSL servers connected (GnuTLS
lib can't reload data after upgrade), so we close connection for
all SSL servers currently connected */
disconnected = 0;
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
if (ptr_server->is_connected && ptr_server->ssl_connected)
{
disconnected++;
weechat_printf (ptr_server->buffer,
_("%s%s: disconnecting from server because upgrade "
"can't work for servers connected via SSL"),
irc_buffer_get_server_prefix (ptr_server, "error"),
IRC_PLUGIN_NAME);
irc_server_disconnect (ptr_server, 0);
/* schedule reconnection: WeeChat will reconnect to this server
after restart */
ptr_server->index_current_address = 0;
ptr_server->reconnect_start = time (NULL) -
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_AUTORECONNECT_DELAY) - 1;
}
}
if (disconnected > 0)
{
weechat_printf (NULL,
/* TRANSLATORS: %s after %d is "server" or "servers" */
_("%s%s: disconnected from %d %s (SSL connection "
"not supported with upgrade)"),
weechat_prefix ("error"), IRC_PLUGIN_NAME,
disconnected,
NG_("server", "servers", disconnected));
}
return WEECHAT_RC_OK;
}