summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2009-12-04 17:36:09 +0100
committerSebastien Helleu <flashcode@flashtux.org>2009-12-04 17:36:09 +0100
commit7e5acaf50f25dd097e8225b0df6c4731c8730a63 (patch)
treeb625584236ec23fcd11c4f37a845f41243d64859
parentda6b882ed82b9e902df5649c326ecfa7ddae4d84 (diff)
downloadweechat-7e5acaf50f25dd097e8225b0df6c4731c8730a63.zip
Give GnuTLS return code to callback if handshake has failed, display extra info in irc plugin if Diffie-Hellman prime sent by the server is not acceptable (not long enough)
-rw-r--r--po/cs.po8
-rw-r--r--po/de.po8
-rw-r--r--po/es.po8
-rw-r--r--po/fr.po12
-rw-r--r--po/hu.po8
-rw-r--r--po/it.po8
-rw-r--r--po/pl.po8
-rw-r--r--po/ru.po8
-rw-r--r--po/weechat.pot8
-rw-r--r--src/core/wee-hook.h1
-rw-r--r--src/core/wee-network.c9
-rw-r--r--src/plugins/irc/irc-server.c15
-rw-r--r--src/plugins/scripts/lua/weechat-lua-api.c13
-rw-r--r--src/plugins/scripts/perl/weechat-perl-api.c13
-rw-r--r--src/plugins/scripts/python/weechat-python-api.c13
-rw-r--r--src/plugins/scripts/ruby/weechat-ruby-api.c13
-rw-r--r--src/plugins/scripts/script-api.c1
-rw-r--r--src/plugins/scripts/script-api.h1
-rw-r--r--src/plugins/scripts/tcl/weechat-tcl-api.c13
-rw-r--r--src/plugins/weechat-plugin.h3
20 files changed, 129 insertions, 42 deletions
diff --git a/po/cs.po b/po/cs.po
index ddf810ef8..ea1057a90 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
"PO-Revision-Date: 2009-09-14 10:56+0200\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4595,6 +4595,12 @@ msgid "%s%s: TLS handshake failed"
msgstr "%s%s: TLS handshake selhal"
#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
+#, c-format
msgid "%s%s: not enough memory"
msgstr "%s%s: nedostatek paměti"
diff --git a/po/de.po b/po/de.po
index 33d4946a4..9528764c7 100644
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
"PO-Revision-Date: 2009-11-26 18:51+0100\n"
"Last-Translator: Nils G <weechatter@arcor.de>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4732,6 +4732,12 @@ msgid "%s%s: TLS handshake failed"
msgstr "%s%s: TLS Handshake fehlgeschlagen"
#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
+#, c-format
msgid "%s%s: not enough memory"
msgstr "%s%s: Nicht genügend Speicher"
diff --git a/po/es.po b/po/es.po
index 11f2bd48b..12ea64869 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
"PO-Revision-Date: 2009-09-06 21:25+0200\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4512,6 +4512,12 @@ msgid "%s%s: TLS handshake failed"
msgstr "%s%s: el saludo TLS ha fallado"
#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
+#, c-format
msgid "%s%s: not enough memory"
msgstr "%s%s: no hay suficiente memoria"
diff --git a/po/fr.po b/po/fr.po
index 2dcf1020d..923abaf55 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
-"PO-Revision-Date: 2009-12-02 12:07+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
+"PO-Revision-Date: 2009-12-04 17:13+0100\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"MIME-Version: 1.0\n"
@@ -4689,6 +4689,14 @@ msgid "%s%s: TLS handshake failed"
msgstr "%s%s: la poignée de main (handshake) de TLS a échoué"
#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+"%s%s: vous devriez jouer avec l'option irc.server.%s.ssl_dhkey_size (la "
+"valeur actuelle est %d)"
+
+#, c-format
msgid "%s%s: not enough memory"
msgstr "%s%s: pas assez de mémoire"
diff --git a/po/hu.po b/po/hu.po
index a40929daf..63416d7b3 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
"PO-Revision-Date: 2009-09-20 13:51+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4530,6 +4530,12 @@ msgstr "%s gnutls inicializációs hiba\n"
msgid "%s%s: TLS handshake failed"
msgstr "%s gnutls kézfogás sikertelen\n"
+#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
#, fuzzy, c-format
msgid "%s%s: not enough memory"
msgstr "Nincs elég memória az új sorhoz\n"
diff --git a/po/it.po b/po/it.po
index efb2682ad..c3d39d630 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Weechat 0.31-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
"PO-Revision-Date: 2009-11-26 01:26+0100\n"
"Last-Translator: Marco Paolone <marcopaolone@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4660,6 +4660,12 @@ msgid "%s%s: TLS handshake failed"
msgstr "%s%s: handshake TLS fallito"
#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
+#, c-format
msgid "%s%s: not enough memory"
msgstr "%s%s: memoria non sufficiente"
diff --git a/po/pl.po b/po/pl.po
index 8d3f487ac..3f409a4ff 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
"PO-Revision-Date: 2009-09-06 21:25+0200\n"
"Last-Translator: Krzysztof Korościk <soltys@szluug.org>\n"
"Language-Team: Polish\n"
@@ -4645,6 +4645,12 @@ msgid "%s%s: TLS handshake failed"
msgstr "%s%s: nawiązanie połączenia TLS nie powiodło się"
#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
+#, c-format
msgid "%s%s: not enough memory"
msgstr "%s%s: za mało pamięci"
diff --git a/po/ru.po b/po/ru.po
index 49dbf098a..c8456f7c9 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+0100\n"
"PO-Revision-Date: 2009-09-20 13:50+0200\n"
"Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4538,6 +4538,12 @@ msgstr "%s ошибка инициализации gnutls\n"
msgid "%s%s: TLS handshake failed"
msgstr "%s инициализация gnutls не удалось\n"
+#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
#, fuzzy, c-format
msgid "%s%s: not enough memory"
msgstr "Недостаточно памяти для новой строчки\n"
diff --git a/po/weechat.pot b/po/weechat.pot
index 638e1c457..a5ef6f25a 100644
--- a/po/weechat.pot
+++ b/po/weechat.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2009-12-02 12:06+0100\n"
+"POT-Creation-Date: 2009-12-04 17:12+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"
@@ -3896,6 +3896,12 @@ msgid "%s%s: TLS handshake failed"
msgstr ""
#, c-format
+msgid ""
+"%s%s: you should play with option irc.server.%s.ssl_dhkey_size (current "
+"value is %d)"
+msgstr ""
+
+#, c-format
msgid "%s%s: not enough memory"
msgstr ""
diff --git a/src/core/wee-hook.h b/src/core/wee-hook.h
index 0f02778ca..67e94d6c4 100644
--- a/src/core/wee-hook.h
+++ b/src/core/wee-hook.h
@@ -181,6 +181,7 @@ struct t_hook_process
/* hook connect */
typedef int (t_hook_callback_connect)(void *data, int status,
+ int gnutls_rc,
const char *error,
const char *ip_address);
diff --git a/src/core/wee-network.c b/src/core/wee-network.c
index 0e2059b74..15e475e3f 100644
--- a/src/core/wee-network.c
+++ b/src/core/wee-network.c
@@ -834,6 +834,7 @@ network_connect_child_read_cb (void *arg_hook_connect, int fd)
(void) (HOOK_CONNECT(hook_connect, callback))
(hook_connect->callback_data,
WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR,
+ rc,
gnutls_strerror (rc),
ip_address);
unhook (hook_connect);
@@ -845,7 +846,7 @@ network_connect_child_read_cb (void *arg_hook_connect, int fd)
#endif
}
(void) (HOOK_CONNECT(hook_connect, callback))
- (hook_connect->callback_data, buffer[0] - '0', NULL, ip_address);
+ (hook_connect->callback_data, buffer[0] - '0', 0, NULL, ip_address);
unhook (hook_connect);
}
@@ -876,7 +877,7 @@ network_connect_with_fork (struct t_hook *hook_connect)
(void) (HOOK_CONNECT(hook_connect, callback))
(hook_connect->callback_data,
'0' + WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR,
- NULL, NULL);
+ 0, NULL, NULL);
unhook (hook_connect);
return;
}
@@ -899,7 +900,7 @@ network_connect_with_fork (struct t_hook *hook_connect)
(void) (HOOK_CONNECT(hook_connect, callback))
(hook_connect->callback_data,
'0' + WEECHAT_HOOK_CONNECT_MEMORY_ERROR,
- NULL, NULL);
+ 0, NULL, NULL);
unhook (hook_connect);
return;
}
@@ -921,7 +922,7 @@ network_connect_with_fork (struct t_hook *hook_connect)
(void) (HOOK_CONNECT(hook_connect, callback))
(hook_connect->callback_data,
'0' + WEECHAT_HOOK_CONNECT_MEMORY_ERROR,
- NULL, NULL);
+ 0, NULL, NULL);
unhook (hook_connect);
return;
/* child process */
diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c
index 9bcba9a27..a76abf4a5 100644
--- a/src/plugins/irc/irc-server.c
+++ b/src/plugins/irc/irc-server.c
@@ -1909,8 +1909,8 @@ irc_server_switch_address (struct t_irc_server *server)
*/
int
-irc_server_connect_cb (void *arg_server, int status, const char *error,
- const char *ip_address)
+irc_server_connect_cb (void *arg_server, int status, int gnutls_rc,
+ const char *error, const char *ip_address)
{
struct t_irc_server *server;
const char *proxy;
@@ -2045,6 +2045,17 @@ irc_server_connect_cb (void *arg_server, int status, const char *error,
weechat_prefix ("error"), IRC_PLUGIN_NAME,
error);
}
+ if (gnutls_rc == GNUTLS_E_DH_PRIME_UNACCEPTABLE)
+ {
+ weechat_printf (server->buffer,
+ _("%s%s: you should play with option "
+ "irc.server.%s.ssl_dhkey_size (current "
+ "value is %d)"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME,
+ server->name,
+ IRC_SERVER_OPTION_INTEGER (server,
+ IRC_SERVER_OPTION_SSL_DHKEY_SIZE));
+ }
irc_server_close_connection (server);
irc_server_switch_address (server);
break;
diff --git a/src/plugins/scripts/lua/weechat-lua-api.c b/src/plugins/scripts/lua/weechat-lua-api.c
index 85968d721..f97eeb968 100644
--- a/src/plugins/scripts/lua/weechat-lua-api.c
+++ b/src/plugins/scripts/lua/weechat-lua-api.c
@@ -3523,11 +3523,12 @@ weechat_lua_api_hook_process (lua_State *L)
*/
int
-weechat_lua_api_hook_connect_cb (void *data, int status,
+weechat_lua_api_hook_connect_cb (void *data, int status, int gnutls_rc,
const char *error, const char *ip_address)
{
struct t_script_callback *script_callback;
- char *lua_argv[5], str_status[32], empty_arg[1] = { '\0' };
+ char *lua_argv[6], str_status[32], str_gnutls_rc[32];
+ char empty_arg[1] = { '\0' };
int *rc, ret;
script_callback = (struct t_script_callback *)data;
@@ -3535,12 +3536,14 @@ weechat_lua_api_hook_connect_cb (void *data, int status,
if (script_callback && script_callback->function && script_callback->function[0])
{
snprintf (str_status, sizeof (str_status), "%d", status);
+ snprintf (str_gnutls_rc, sizeof (str_gnutls_rc), "%d", gnutls_rc);
lua_argv[0] = (script_callback->data) ? script_callback->data : empty_arg;
lua_argv[1] = str_status;
- lua_argv[2] = (ip_address) ? (char *)ip_address : empty_arg;
- lua_argv[3] = (error) ? (char *)error : empty_arg;
- lua_argv[4] = NULL;
+ lua_argv[2] = str_gnutls_rc;
+ lua_argv[3] = (ip_address) ? (char *)ip_address : empty_arg;
+ lua_argv[4] = (error) ? (char *)error : empty_arg;
+ lua_argv[5] = NULL;
rc = (int *) weechat_lua_exec (script_callback->script,
WEECHAT_SCRIPT_EXEC_INT,
diff --git a/src/plugins/scripts/perl/weechat-perl-api.c b/src/plugins/scripts/perl/weechat-perl-api.c
index 4b12fff25..1538e7177 100644
--- a/src/plugins/scripts/perl/weechat-perl-api.c
+++ b/src/plugins/scripts/perl/weechat-perl-api.c
@@ -2968,11 +2968,12 @@ XS (XS_weechat_api_hook_process)
*/
int
-weechat_perl_api_hook_connect_cb (void *data, int status,
+weechat_perl_api_hook_connect_cb (void *data, int status, int gnutls_rc,
const char *error, const char *ip_address)
{
struct t_script_callback *script_callback;
- char *perl_argv[5], str_status[32], empty_arg[1] = { '\0' };
+ char *perl_argv[6], str_status[32], str_gnutls_rc[32];
+ char empty_arg[1] = { '\0' };
int *rc, ret;
script_callback = (struct t_script_callback *)data;
@@ -2980,12 +2981,14 @@ weechat_perl_api_hook_connect_cb (void *data, int status,
if (script_callback && script_callback->function && script_callback->function[0])
{
snprintf (str_status, sizeof (str_status), "%d", status);
+ snprintf (str_gnutls_rc, sizeof (str_gnutls_rc), "%d", gnutls_rc);
perl_argv[0] = (script_callback->data) ? script_callback->data : empty_arg;
perl_argv[1] = str_status;
- perl_argv[2] = (ip_address) ? (char *)ip_address : empty_arg;
- perl_argv[3] = (error) ? (char *)error : empty_arg;
- perl_argv[4] = NULL;
+ perl_argv[2] = str_gnutls_rc;
+ perl_argv[3] = (ip_address) ? (char *)ip_address : empty_arg;
+ perl_argv[4] = (error) ? (char *)error : empty_arg;
+ perl_argv[5] = NULL;
rc = (int *) weechat_perl_exec (script_callback->script,
WEECHAT_SCRIPT_EXEC_INT,
diff --git a/src/plugins/scripts/python/weechat-python-api.c b/src/plugins/scripts/python/weechat-python-api.c
index a839093a0..c13e9cb18 100644
--- a/src/plugins/scripts/python/weechat-python-api.c
+++ b/src/plugins/scripts/python/weechat-python-api.c
@@ -3135,11 +3135,12 @@ weechat_python_api_hook_process (PyObject *self, PyObject *args)
*/
int
-weechat_python_api_hook_connect_cb (void *data, int status,
+weechat_python_api_hook_connect_cb (void *data, int status, int gnutls_rc,
const char *error, const char *ip_address)
{
struct t_script_callback *script_callback;
- char *python_argv[5], str_status[32], empty_arg[1] = { '\0' };
+ char *python_argv[6], str_status[32], str_gnutls_rc[32];
+ char empty_arg[1] = { '\0' };
int *rc, ret;
script_callback = (struct t_script_callback *)data;
@@ -3147,12 +3148,14 @@ weechat_python_api_hook_connect_cb (void *data, int status,
if (script_callback && script_callback->function && script_callback->function[0])
{
snprintf (str_status, sizeof (str_status), "%d", status);
+ snprintf (str_gnutls_rc, sizeof (str_gnutls_rc), "%d", gnutls_rc);
python_argv[0] = (script_callback->data) ? script_callback->data : empty_arg;
python_argv[1] = str_status;
- python_argv[2] = (ip_address) ? (char *)ip_address : empty_arg;
- python_argv[3] = (error) ? (char *)error : empty_arg;
- python_argv[4] = NULL;
+ python_argv[2] = str_gnutls_rc;
+ python_argv[3] = (ip_address) ? (char *)ip_address : empty_arg;
+ python_argv[4] = (error) ? (char *)error : empty_arg;
+ python_argv[5] = NULL;
rc = (int *) weechat_python_exec (script_callback->script,
WEECHAT_SCRIPT_EXEC_INT,
diff --git a/src/plugins/scripts/ruby/weechat-ruby-api.c b/src/plugins/scripts/ruby/weechat-ruby-api.c
index 31d4490cc..930489cc8 100644
--- a/src/plugins/scripts/ruby/weechat-ruby-api.c
+++ b/src/plugins/scripts/ruby/weechat-ruby-api.c
@@ -3620,11 +3620,12 @@ weechat_ruby_api_hook_process (VALUE class, VALUE command, VALUE timeout,
*/
int
-weechat_ruby_api_hook_connect_cb (void *data, int status,
+weechat_ruby_api_hook_connect_cb (void *data, int status, int gnutls_rc,
const char *error, const char *ip_address)
{
struct t_script_callback *script_callback;
- char *ruby_argv[5], str_status[32], empty_arg[1] = { '\0' };
+ char *ruby_argv[6], str_status[32], str_gnutls_rc[32];
+ char empty_arg[1] = { '\0' };
int *rc, ret;
script_callback = (struct t_script_callback *)data;
@@ -3632,12 +3633,14 @@ weechat_ruby_api_hook_connect_cb (void *data, int status,
if (script_callback && script_callback->function && script_callback->function[0])
{
snprintf (str_status, sizeof (str_status), "%d", status);
+ snprintf (str_gnutls_rc, sizeof (str_gnutls_rc), "%d", gnutls_rc);
ruby_argv[0] = (script_callback->data) ? script_callback->data : empty_arg;
ruby_argv[1] = str_status;
- ruby_argv[2] = (ip_address) ? (char *)ip_address : empty_arg;
- ruby_argv[3] = (error) ? (char *)error : empty_arg;
- ruby_argv[4] = NULL;
+ ruby_argv[2] = str_gnutls_rc;
+ ruby_argv[3] = (ip_address) ? (char *)ip_address : empty_arg;
+ ruby_argv[4] = (error) ? (char *)error : empty_arg;
+ ruby_argv[5] = NULL;
rc = (int *) weechat_ruby_exec (script_callback->script,
WEECHAT_SCRIPT_EXEC_INT,
diff --git a/src/plugins/scripts/script-api.c b/src/plugins/scripts/script-api.c
index 2eaabeefc..96d602add 100644
--- a/src/plugins/scripts/script-api.c
+++ b/src/plugins/scripts/script-api.c
@@ -929,6 +929,7 @@ script_api_hook_connect (struct t_weechat_plugin *weechat_plugin,
void *gnutls_cb, int gnutls_dhkey_size,
const char *local_hostname,
int (*callback)(void *data, int status,
+ int gnutls_rc,
const char *error,
const char *ip_address),
const char *function,
diff --git a/src/plugins/scripts/script-api.h b/src/plugins/scripts/script-api.h
index 434660f7f..8dce7becd 100644
--- a/src/plugins/scripts/script-api.h
+++ b/src/plugins/scripts/script-api.h
@@ -174,6 +174,7 @@ extern struct t_hook *script_api_hook_connect (struct t_weechat_plugin *weechat_
const char *local_hostname,
int (*callback)(void *data,
int status,
+ int gnutls_rc,
const char *error,
const char *ip_address),
const char *function,
diff --git a/src/plugins/scripts/tcl/weechat-tcl-api.c b/src/plugins/scripts/tcl/weechat-tcl-api.c
index 04a654475..63701f3e1 100644
--- a/src/plugins/scripts/tcl/weechat-tcl-api.c
+++ b/src/plugins/scripts/tcl/weechat-tcl-api.c
@@ -3375,11 +3375,12 @@ weechat_tcl_api_hook_process (ClientData clientData, Tcl_Interp *interp,
*/
int
-weechat_tcl_api_hook_connect_cb (void *data, int status,
+weechat_tcl_api_hook_connect_cb (void *data, int status, int gnutls_rc,
const char *error, const char *ip_address)
{
struct t_script_callback *script_callback;
- char *tcl_argv[5], str_status[32], empty_arg[1] = { '\0' };
+ char *tcl_argv[6], str_status[32], str_gnutls_rc[32];
+ char empty_arg[1] = { '\0' };
int *rc, ret;
script_callback = (struct t_script_callback *)data;
@@ -3387,12 +3388,14 @@ weechat_tcl_api_hook_connect_cb (void *data, int status,
if (script_callback && script_callback->function && script_callback->function[0])
{
snprintf (str_status, sizeof (str_status), "%d", status);
+ snprintf (str_gnutls_rc, sizeof (str_gnutls_rc), "%d", gnutls_rc);
tcl_argv[0] = (script_callback->data) ? script_callback->data : empty_arg;
tcl_argv[1] = str_status;
- tcl_argv[2] = (ip_address) ? (char *)ip_address : empty_arg;
- tcl_argv[3] = (error) ? (char *)error : empty_arg;
- tcl_argv[4] = NULL;
+ tcl_argv[2] = str_gnutls_rc;
+ tcl_argv[3] = (ip_address) ? (char *)ip_address : empty_arg;
+ tcl_argv[4] = (error) ? (char *)error : empty_arg;
+ tcl_argv[5] = NULL;
rc = (int *) weechat_tcl_exec (script_callback->script,
WEECHAT_SCRIPT_EXEC_INT,
diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h
index 9a3e79c0a..b4b4a7a4d 100644
--- a/src/plugins/weechat-plugin.h
+++ b/src/plugins/weechat-plugin.h
@@ -34,7 +34,7 @@ struct t_weelist;
struct timeval;
/* API version (used to check that plugin has same API and can be loaded) */
-#define WEECHAT_PLUGIN_API_VERSION "20091107-01"
+#define WEECHAT_PLUGIN_API_VERSION "20091204-01"
/* macros for defining plugin infos */
#define WEECHAT_PLUGIN_NAME(__name) \
@@ -401,6 +401,7 @@ struct t_weechat_plugin
const char *local_hostname,
int (*callback)(void *data,
int status,
+ int gnutls_rc,
const char *error,
const char *ip_address),
void *callback_data);