[asterisk-commits] jrose: trunk r375576 - in /trunk: ./ channels/chan_sip.c configs/sip.conf.sample

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Nov 1 10:03:09 CDT 2012


Author: jrose
Date: Thu Nov  1 10:03:04 2012
New Revision: 375576

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=375576
Log:
chan_sip: Fix a bug causing SIP reloads to remove all entries from the registry

(closes issue ASTERISK-20611)
Reported by: Alisher
........

Merged revisions 375575 from http://svn.asterisk.org/svn/asterisk/branches/11

Modified:
    trunk/   (props changed)
    trunk/channels/chan_sip.c
    trunk/configs/sip.conf.sample

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.

Modified: trunk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=375576&r1=375575&r2=375576
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Thu Nov  1 10:03:04 2012
@@ -30934,7 +30934,16 @@
 static int peer_markall_func(void *device, void *arg, int flags)
 {
 	struct sip_peer *peer = device;
-	if (!peer->selfdestruct || sip_cfg.autocreatepeer != AUTOPEERS_PERSIST) {
+	if (!peer->selfdestruct) {
+		peer->the_mark = 1;
+	}
+	return 0;
+}
+
+static int peer_markall_autopeers_func(void *device, void *arg, int flags)
+{
+	struct sip_peer *peer = device;
+	if (peer->selfdestruct) {
 		peer->the_mark = 1;
 	}
 	return 0;
@@ -31076,6 +31085,11 @@
 		ast_mutex_unlock(&authl_lock);
 
 		cleanup_all_regs();
+
+		/* Then, actually destroy users and registry */
+		ASTOBJ_CONTAINER_DESTROYALL(&regl, sip_registry_destroy);
+		ast_debug(4, "--------------- Done destroying registry list\n");
+		ao2_t_callback(peers, OBJ_NODATA, peer_markall_func, NULL, "callback to mark all peers");
 	}
 
 	/* Reset certificate handling for TLS sessions */
@@ -31802,11 +31816,8 @@
 		max_subexpiry = max_expiry;
 	}
 
-	if (reason != CHANNEL_MODULE_LOAD) {
-		/* Then, actually destroy users and registry */
-		ASTOBJ_CONTAINER_DESTROYALL(&regl, sip_registry_destroy);
-		ast_debug(4, "--------------- Done destroying registry list\n");
-		ao2_t_callback(peers, OBJ_NODATA, peer_markall_func, NULL, "callback to mark all peers");
+	if (reason != CHANNEL_MODULE_LOAD && sip_cfg.autocreatepeer != AUTOPEERS_PERSIST) {
+		ao2_t_callback(peers, OBJ_NODATA, peer_markall_autopeers_func, NULL, "callback to mark autopeers for destruction");
 	}
 
 	if (subscribe_network_change) {

Modified: trunk/configs/sip.conf.sample
URL: http://svnview.digium.com/svn/asterisk/trunk/configs/sip.conf.sample?view=diff&rev=375576&r1=375575&r2=375576
==============================================================================
--- trunk/configs/sip.conf.sample (original)
+++ trunk/configs/sip.conf.sample Thu Nov  1 10:03:04 2012
@@ -510,14 +510,14 @@
 ;
 ;refer_addheaders=yes	; on by default
 
-;autocreatepeers=no             ; Allow any not exsplicitly defined here UAC to register
-                                ; WITHOUT AUTHENTICATION. Enabling this options poses a high
-                                ; potential security risk and should be avoided unless the 
-                                ; server is behind a trusted firewall. 
-                                ; When enabled by setting to "yes", the autocreated peers are
-                                ; pruned immediately when the "sip reload" command is issued
-                                ; through CLI. When enabled by setting to "persist", the auto-
-                                ; created peers survive the "sip reload" command.
+;autocreatepeer=no             ; Allow any UAC not explicitly defined to register
+                               ; WITHOUT AUTHENTICATION. Enabling this options poses a high
+                               ; potential security risk and should be avoided unless the
+                               ; server is behind a trusted firewall.
+                               ; If set to "yes", then peers created in this fashion
+                               ; are purged during SIP reloads.
+                               ; When set to "persist", the peers created in this fashion
+                               ; are not purged during SIP reloads.
 
 ;
 ;------------------------ TLS settings ------------------------------------------------------------




More information about the asterisk-commits mailing list