|
|
|
@ -168,11 +168,11 @@ static char *ajistatus_descrip =
|
|
|
|
|
" 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 @@ static int aji_act_hook(void *data, int type, iks *node)
|
|
|
|
|
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 aji_reload()
|
|
|
|
|
|
|
|
|
|
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 */
|
|
|
|
|
}
|
|
|
|
|