[asterisk-commits] oej: branch 1.4 r68028 -
/branches/1.4/res/res_jabber.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Thu Jun 7 02:55:14 MST 2007
Author: oej
Date: Thu Jun 7 04:55:13 2007
New Revision: 68028
URL: http://svn.digium.com/view/asterisk?view=rev&rev=68028
Log:
Ok, we found out that this is not about if you have any *active* clients using TLS, but
if you have initialized TLS at all during the lifetime of the module. So if you reload
to disable TLS, it won't help.
Modified:
branches/1.4/res/res_jabber.c
Modified: branches/1.4/res/res_jabber.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/res/res_jabber.c?view=diff&rev=68028&r1=68027&r2=68028
==============================================================================
--- branches/1.4/res/res_jabber.c (original)
+++ branches/1.4/res/res_jabber.c Thu Jun 7 04:55:13 2007
@@ -168,11 +168,11 @@
" If not in roster variable will = 7\n";
struct aji_client_container clients;
-
struct aji_capabilities *capabilities = NULL;
/*! \brief Global flags, initialized to default values */
static struct ast_flags globalflags = { AJI_AUTOPRUNE | AJI_AUTOREGISTER };
+static int tls_initialized = FALSE;
/*!
* \brief Deletes the aji_client data structure.
@@ -502,10 +502,11 @@
switch (type) {
case IKS_NODE_START:
if (client->usetls && !iks_is_secure(client->p)) {
- if (iks_has_tls())
+ if (iks_has_tls()) {
iks_start_tls(client->p);
- else
- ast_log(LOG_ERROR, "gnuTLS not installed.\n");
+ tls_initialized = TRUE;
+ } else
+ ast_log(LOG_ERROR, "gnuTLS not installed. You need to recompile the Iksemel library with gnuTLS support\n");
break;
}
if (!client->usesasl) {
@@ -2416,20 +2417,13 @@
static int unload_module(void)
{
- int module_uses_tls = FALSE;
-
- /* Check if any client use TLS. If that's the case, we can't unload this
+
+ /* Check if TLS is initialized. If that's the case, we can't unload this
module due to a bug in the iksemel library that will cause a crash or
a deadlock. We're trying to find a way to handle this, but in the meantime
we will simply refuse to die...
*/
- ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
- ASTOBJ_RDLOCK(iterator);
- if (iterator->usetls)
- module_uses_tls = TRUE;
- ASTOBJ_UNLOCK(iterator);
- });
- if (module_uses_tls) {
+ if (tls_initialized) {
ast_log(LOG_ERROR, "Module can't be unloaded due to a bug in the Iksemel library when using TLS.\n");
return 1; /* You need a forced unload to get rid of this module */
}
More information about the asterisk-commits
mailing list