[asterisk-commits] russell: branch 1.6.2 r315212 - /branches/1.6.2/channels/chan_sip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Apr 25 14:00:33 CDT 2011


Author: russell
Date: Mon Apr 25 14:00:24 2011
New Revision: 315212

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=315212
Log:
Don't link non-cached realtime peers into the peers_by_ip container.

(closes issue #18924)
Reported by: wdoekes
Patches:
      issue18924_uncached_realtime_peers_leak-1.6.2.17.patch uploaded by wdoekes (license 717)

Modified:
    branches/1.6.2/channels/chan_sip.c

Modified: branches/1.6.2/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.2/channels/chan_sip.c?view=diff&rev=315212&r1=315211&r2=315212
==============================================================================
--- branches/1.6.2/channels/chan_sip.c (original)
+++ branches/1.6.2/channels/chan_sip.c Mon Apr 25 14:00:24 2011
@@ -12856,7 +12856,7 @@
 	oldsin = peer->addr;
 
 	/* If we were already linked into the peers_by_ip container unlink ourselves so nobody can find us */
-	if (peer->addr.sin_addr.s_addr) {
+	if (peer->addr.sin_addr.s_addr && (!peer->is_realtime || ast_test_flag(&global_flags[1], SIP_PAGE2_RTCACHEFRIENDS))) {
 		ao2_t_unlink(peers_by_ip, peer, "ao2_unlink of peer from peers_by_ip table");
 	}
 
@@ -12903,7 +12903,9 @@
 	}
 
 	/* Now that our address has been updated put ourselves back into the container for lookups */
-	ao2_t_link(peers_by_ip, peer, "ao2_link into peers_by_ip table");
+	if (!peer->is_realtime || ast_test_flag(&peer->flags[1], SIP_PAGE2_RTCACHEFRIENDS)) {
+		ao2_t_link(peers_by_ip, peer, "ao2_link into peers_by_ip table");
+	}
 
 	/* Save SIP options profile */
 	peer->sipoptions = pvt->sipoptions;
@@ -15462,6 +15464,8 @@
 		return CLI_SHOWUSAGE;
 	ast_cli(a->fd, "-= Peer objects: %d static, %d realtime, %d autocreate =-\n\n", speerobjs, rpeerobjs, apeerobjs);
 	ao2_t_callback(peers, OBJ_NODATA, peer_dump_func, &a->fd, "initiate ao2_callback to dump peers");
+	ast_cli(a->fd, "-= Peer objects by IP =-\n\n"); 
+	ao2_t_callback(peers_by_ip, OBJ_NODATA, peer_dump_func, &a->fd, "initiate ao2_callback to dump peers_by_ip");
 	ast_cli(a->fd, "-= Registry objects: %d =-\n\n", regobjs);
 	ASTOBJ_CONTAINER_DUMP(a->fd, tmp, sizeof(tmp), &regl);
 	ast_cli(a->fd, "-= Dialog objects:\n\n");




More information about the asterisk-commits mailing list