[asterisk-commits] mmichelson: branch group/CCSS_Monitor_Restructure r244384 - /team/group/CCSS_...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Feb 2 13:46:25 CST 2010


Author: mmichelson
Date: Tue Feb  2 13:46:23 2010
New Revision: 244384

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=244384
Log:
Add some module refcounting on the SIP monitor.


Modified:
    team/group/CCSS_Monitor_Restructure/channels/chan_sip.c

Modified: team/group/CCSS_Monitor_Restructure/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/CCSS_Monitor_Restructure/channels/chan_sip.c?view=diff&rev=244384&r1=244383&r2=244384
==============================================================================
--- team/group/CCSS_Monitor_Restructure/channels/chan_sip.c (original)
+++ team/group/CCSS_Monitor_Restructure/channels/chan_sip.c Tue Feb  2 13:46:23 2010
@@ -3801,6 +3801,7 @@
 {
 	struct sip_monitor_instance *monitor_instance = private_data;
 	ao2_unlink(sip_monitor_instances, monitor_instance);
+	ast_module_unref(ast_module_info->self);
 }
 
 static int sip_get_cc_information(struct sip_request *req, char *subscribe_uri, size_t size, enum ast_cc_service_type *service)
@@ -3907,7 +3908,11 @@
 			/* Same deal. We can try using generic still */
 			goto generic;
 		}
-		/* We're all set! */
+		/* We bump the refcount of chan_sip because once we queue this frame, the CC core
+		 * will have a reference to callbacks in this module. We decrement the module
+		 * refcount once the monitor destructor is called
+		 */
+		ast_module_ref(ast_module_info->self);
 		ast_queue_cc_frame(pvt->owner, "SIP", interface_name, offered_service, monitor_instance);
 		ao2_ref(monitor_instance, -1);
 		return;




More information about the asterisk-commits mailing list