]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res/res_pjsip_outbound_registration: Apply configuration on object type load 64/1664/1
authorMatt Jordan <mjordan@digium.com>
Thu, 19 Nov 2015 15:40:24 +0000 (09:40 -0600)
committerMatt Jordan <mjordan@digium.com>
Thu, 19 Nov 2015 15:44:39 +0000 (09:44 -0600)
When Asterisk is configured to use a dynamic sorcery backend (such as
res_sorcery_astdb) with 'registration' objects, it will fail to create the
internal state objects associated with the registration objects on module
load. This is due to nothing actually querying for the specific objects
and calling their sorcery apply handler during module load.

This patch fixes that by calling get_registrations in the sorcery observer's
object_type_loaded handler. Doing this causes the sorcery backends to be
asked for the current state of all registration objects, which causes the
apply handler to be called and the internal run-time state to be created.

ASTERISK-25575 #close

Change-Id: Ie9306e797098c6d4da7bcf4a5434a15891508b23

res/res_pjsip_outbound_registration.c

index 7ff5f1619bfb390b2cdc8bd974426158ce8fa193..7b125334a87b969a638d44fefe00c3486ac54791 100644 (file)
@@ -1846,6 +1846,13 @@ static void registration_loaded_observer(const char *name, const struct ast_sorc
                return;
        }
 
+       /*
+        * Refresh the current configured registrations. We don't need to hold
+        * onto the objects, as the apply handler will cause their states to
+        * be created appropriately.
+        */
+       ao2_cleanup(get_registrations());
+
        /* Now to purge dead registrations. */
        ao2_callback(states, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, check_state, NULL);
        ao2_ref(states, -1);