[svn-commits] file: branch file/pjsip-outbound-publish r420253 - /team/file/pjsip-outbound-...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Aug 6 13:21:42 CDT 2014


Author: file
Date: Wed Aug  6 13:21:39 2014
New Revision: 420253

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=420253
Log:
Incorporate feedback.

Modified:
    team/file/pjsip-outbound-publish/res/res_pjsip_outbound_publish.c
    team/file/pjsip-outbound-publish/res/res_pjsip_publish_asterisk.c

Modified: team/file/pjsip-outbound-publish/res/res_pjsip_outbound_publish.c
URL: http://svnview.digium.com/svn/asterisk/team/file/pjsip-outbound-publish/res/res_pjsip_outbound_publish.c?view=diff&rev=420253&r1=420252&r2=420253
==============================================================================
--- team/file/pjsip-outbound-publish/res/res_pjsip_outbound_publish.c (original)
+++ team/file/pjsip-outbound-publish/res/res_pjsip_outbound_publish.c Wed Aug  6 13:21:39 2014
@@ -597,8 +597,7 @@
 
 	if (publish->state->client) {
 		return 0;
-	} else if (!publish->state->client &&
-		pjsip_publishc_create(ast_sip_get_pjsip_endpoint(), &opt, ao2_bump(publish), sip_outbound_publish_callback,
+	} else if (pjsip_publishc_create(ast_sip_get_pjsip_endpoint(), &opt, ao2_bump(publish), sip_outbound_publish_callback,
 		&publish->state->client) != PJ_SUCCESS) {
 		ao2_ref(publish, -1);
 		return -1;
@@ -684,9 +683,14 @@
 	pjsip_tx_data *tdata;
 
 	if (publish->state->destroy) {
-		if (publish->state->sending &&
-			pjsip_publishc_unpublish(publish->state->client, &tdata) == PJ_SUCCESS) {
-			pjsip_publishc_send(publish->state->client, tdata);
+		if (publish->state->sending) {
+			publish->state->sending = NULL;
+			if (!ast_sip_push_task(NULL, send_unpublish_task, ao2_bump(publish->state))) {
+				return;
+			}
+			ast_log(LOG_WARNING, "Could not send unpublish message on outbound publish '%s'\n",
+				ast_sorcery_object_get_id(publish));
+			ao2_ref(publish->state, -1);
 		}
 		/* Once the destroy is called this callback will not get called any longer, so drop the publish ref */
 		pjsip_publishc_destroy(publish->state->client);
@@ -975,7 +979,7 @@
 	ast_sorcery_object_field_register(ast_sip_get_sorcery(), "outbound-publish", "to_uri", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_outbound_publish, to_uri));
 	ast_sorcery_object_field_register(ast_sip_get_sorcery(), "outbound-publish", "outbound_proxy", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_outbound_publish, outbound_proxy));
 	ast_sorcery_object_field_register(ast_sip_get_sorcery(), "outbound-publish", "expiration", "3600", OPT_UINT_T, 0, FLDSET(struct ast_sip_outbound_publish, expiration));
-	ast_sorcery_object_field_register(ast_sip_get_sorcery(), "outbound-publish", "max_auth_attempts", "5", OPT_UINT_T, 0, FLDSET(struct ast_sip_outbound_publish, max_auth_attempts));	
+	ast_sorcery_object_field_register(ast_sip_get_sorcery(), "outbound-publish", "max_auth_attempts", "5", OPT_UINT_T, 0, FLDSET(struct ast_sip_outbound_publish, max_auth_attempts));
 	ast_sorcery_object_field_register_custom(ast_sip_get_sorcery(), "outbound-publish", "outbound_auth", "", outbound_auth_handler, NULL, NULL, 0, 0);
 	ast_sorcery_reload_object(ast_sip_get_sorcery(), "outbound-publish");
 

Modified: team/file/pjsip-outbound-publish/res/res_pjsip_publish_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/file/pjsip-outbound-publish/res/res_pjsip_publish_asterisk.c?view=diff&rev=420253&r1=420252&r2=420253
==============================================================================
--- team/file/pjsip-outbound-publish/res/res_pjsip_publish_asterisk.c (original)
+++ team/file/pjsip-outbound-publish/res/res_pjsip_publish_asterisk.c Wed Aug  6 13:21:39 2014
@@ -39,9 +39,9 @@
 
 /*** DOCUMENTATION
 	<configInfo name="res_pjsip_publish_asterisk" language="en_US">
-		<synopsis>SIP resource for inbound Asterisk event publications</synopsis>
+		<synopsis>SIP resource for inbound and outbound Asterisk event publications</synopsis>
 		<description><para>
-			<emphasis>Inbound Asterisk event publication</emphasis>
+			<emphasis>Inbound and outbound Asterisk event publication</emphasis>
 			</para>
 			<para>This module allows <literal>res_pjsip</literal> to send and receive Asterisk event publications.</para>
 		</description>
@@ -356,6 +356,7 @@
 		asterisk_publisher_devstate_cb, ao2_bump(datastore));
 	if (!publisher_state->device_state_subscription) {
 		ast_sip_publish_client_remove_datastore(client, "asterisk-devicestate-publisher");
+		ao2_ref(datastore, -1);
 		return -1;
 	}
 
@@ -430,6 +431,7 @@
 		asterisk_publisher_mwistate_cb, ao2_bump(datastore));
 	if (!publisher_state->mailbox_state_subscription) {
 		ast_sip_publish_client_remove_datastore(client, "asterisk-mwi-publisher");
+		ao2_ref(datastore, -1);
 		return -1;
 	}
 
@@ -572,8 +574,10 @@
 	}
 
 	cached = stasis_cache_dump(ast_device_state_cache(), NULL);
-	ao2_callback(cached, OBJ_NODATA, cached_devstate_cb, datastore);
-	ao2_ref(cached, -1);
+	if (cached) {
+		ao2_callback(cached, OBJ_NODATA, cached_devstate_cb, datastore);
+		ao2_ref(cached, -1);
+	}
 	ao2_ref(client, -1);
 	ao2_ref(datastore, -1);
 
@@ -662,8 +666,10 @@
 	}
 
 	cached = stasis_cache_dump(ast_mwi_state_cache(), NULL);
-	ao2_callback(cached, OBJ_NODATA, cached_mwistate_cb, datastore);
-	ao2_ref(cached, -1);
+	if (cached) {
+		ao2_callback(cached, OBJ_NODATA, cached_mwistate_cb, datastore);
+		ao2_ref(cached, -1);
+	}
 	ao2_ref(client, -1);
 	ao2_ref(datastore, -1);
 




More information about the svn-commits mailing list