[asterisk-commits] kharwell: branch 12 r405643 - /branches/12/channels/chan_pjsip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jan 16 10:35:15 CST 2014


Author: kharwell
Date: Thu Jan 16 10:35:12 2014
New Revision: 405643

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=405643
Log:
chan_pjsip: initial device state on endpoints is INVALID

When endpoints get loaded their device state gets set to 'INVALID' because the
channel driver has not been loaded yet.  Fixed by updating the device state for
every endpoint upon load of the channel driver.

(closes issue ASTERISK-23065)
Reported by: Rusty Newton
Review: https://reviewboard.asterisk.org/r/3123/

Modified:
    branches/12/channels/chan_pjsip.c

Modified: branches/12/channels/chan_pjsip.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/channels/chan_pjsip.c?view=diff&rev=405643&r1=405642&r2=405643
==============================================================================
--- branches/12/channels/chan_pjsip.c (original)
+++ branches/12/channels/chan_pjsip.c Thu Jan 16 10:35:12 2014
@@ -1874,6 +1874,13 @@
 	return 0;
 }
 
+static int update_devstate(void *obj, void *arg, int flags)
+{
+	ast_devstate_changed(AST_DEVICE_UNKNOWN, AST_DEVSTATE_CACHABLE,
+			     "PJSIP/%s", ast_sorcery_object_get_id(obj));
+	return 0;
+}
+
 static struct ast_custom_function chan_pjsip_dial_contacts_function = {
 	.name = "PJSIP_DIAL_CONTACTS",
 	.read = pjsip_acf_dial_contacts_read,
@@ -1897,6 +1904,8 @@
  */
 static int load_module(void)
 {
+	struct ao2_container *endpoints;
+
 	if (!(chan_pjsip_tech.capabilities = ast_format_cap_alloc(0))) {
 		return AST_MODULE_LOAD_DECLINE;
 	}
@@ -1936,6 +1945,13 @@
 		ast_sip_session_unregister_supplement(&pbx_start_supplement);
 		ast_sip_session_unregister_supplement(&chan_pjsip_supplement);
 		goto end;
+	}
+
+	/* since endpoints are loaded before the channel driver their device
+	   states get set to 'invalid', so they need to be updated */
+	if ((endpoints = ast_sip_get_endpoints())) {
+		ao2_callback(endpoints, OBJ_NODATA, update_devstate, NULL);
+		ao2_ref(endpoints, -1);
 	}
 
 	return 0;




More information about the asterisk-commits mailing list