diff --git a/ChangeLog.adoc b/ChangeLog.adoc index 42613b13e..984472319 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -29,6 +29,7 @@ New features:: Bug fixes:: + * core: set again TLS verification functions after options weechat.network.gnutls_ca_system and weechat.network.gnutls_ca_user are changed (issue #1763) * core: fix memory leak when removing a line on a buffer with free content * core: remove obsolete option weechat.plugin.debug (issue #1744) * core: fix search of commands with UTF-8 chars in name when option weechat.look.command_incomplete is on (issue #1739) diff --git a/src/core/wee-network.c b/src/core/wee-network.c index e982fbdb9..202f2b61b 100644 --- a/src/core/wee-network.c +++ b/src/core/wee-network.c @@ -91,6 +91,27 @@ network_init_gcrypt () gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); } +/* + * Allocates credentials structure. + */ + +void +network_allocate_credentials () +{ + gnutls_certificate_allocate_credentials (&gnutls_xcred); +#if LIBGNUTLS_VERSION_NUMBER >= 0x02090a /* 2.9.10 */ + gnutls_certificate_set_verify_function (gnutls_xcred, + &hook_connect_gnutls_verify_certificates); +#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x02090a */ +#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00 /* 2.11.0 */ + gnutls_certificate_set_retrieve_function (gnutls_xcred, + &hook_connect_gnutls_set_certificates); +#else + gnutls_certificate_client_set_retrieve_function (gnutls_xcred, + &hook_connect_gnutls_set_certificates); +#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x020b00 */ +} + /* * Loads system's default trusted certificate authorities. * @@ -259,9 +280,7 @@ network_reload_ca_files (int force_display) network_num_certs), network_num_certs); } - - gnutls_certificate_allocate_credentials (&gnutls_xcred); - + network_allocate_credentials (); network_load_ca_files (force_display); } @@ -275,19 +294,8 @@ network_init_gnutls () if (!weechat_no_gnutls) { gnutls_global_init (); - gnutls_certificate_allocate_credentials (&gnutls_xcred); + network_allocate_credentials (); network_load_ca_files (0); -#if LIBGNUTLS_VERSION_NUMBER >= 0x02090a /* 2.9.10 */ - gnutls_certificate_set_verify_function (gnutls_xcred, - &hook_connect_gnutls_verify_certificates); -#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x02090a */ -#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00 /* 2.11.0 */ - gnutls_certificate_set_retrieve_function (gnutls_xcred, - &hook_connect_gnutls_set_certificates); -#else - gnutls_certificate_client_set_retrieve_function (gnutls_xcred, - &hook_connect_gnutls_set_certificates); -#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x020b00 */ } network_init_gnutls_ok = 1;