Retain XMPP filters across reconnections so external modules continue to function...
[asterisk/asterisk.git] / res / res_xmpp.c
index 1e130e7..04db2dd 100644 (file)
@@ -440,6 +440,10 @@ static void xmpp_client_destructor(void *obj)
 
        ast_xmpp_client_disconnect(client);
 
+       if (client->filter) {
+               iks_filter_delete(client->filter);
+       }
+
        if (client->stack) {
                iks_stack_delete(client->stack);
        }
@@ -3408,12 +3412,6 @@ int ast_xmpp_client_disconnect(struct ast_xmpp_client *client)
                iks_disconnect(client->parser);
        }
 
-       /* Disconnecting the parser and going back to a disconnected state means any hooks should no longer be present */
-       if (client->filter) {
-               iks_filter_delete(client->filter);
-               client->filter = NULL;
-       }
-
        client->state = XMPP_STATE_DISCONNECTED;
 
        return 0;