[svn-commits] bbryant: trunk r318918 - in /trunk: ./ channels/chan_sip.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri May 13 12:58:59 CDT 2011


Author: bbryant
Date: Fri May 13 12:58:53 2011
New Revision: 318918

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=318918
Log:
Merged revisions 318917 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r318917 | bbryant | 2011-05-13 13:56:04 -0400 (Fri, 13 May 2011) | 11 lines
  
  This patch allows TCP peers into the ast_db where they were previously
  restricted.
  
  (closes issue #18882)
  Reported by: cmaj
  Patches: 
        patch-chan_sip-1.8.3-rc2-allow-tcp-peer-store-db-and-readonly-rt-backend.diff.txt
        uploaded by cmaj (license 830)
  Tested by: cmaj
........

Modified:
    trunk/   (props changed)
    trunk/channels/chan_sip.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-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=318918&r1=318917&r2=318918
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Fri May 13 12:58:53 2011
@@ -13445,7 +13445,8 @@
 		AST_APP_ARG(contact);
 	);
 
-	if (peer->rt_fromcontact) {
+	/* If read-only RT backend, then refresh from local DB cache */
+	if (peer->rt_fromcontact && sip_cfg.peer_rtupdate) {
 		return;
 	}
 	if (ast_db_get("SIP/Registry", peer->name, data, sizeof(data))) {
@@ -13764,11 +13765,8 @@
 	pvt->expiry = expire;
 	snprintf(data, sizeof(data), "%s:%d:%s:%s", ast_sockaddr_stringify(&peer->addr),
 		 expire, peer->username, peer->fullcontact);
-	/* Saving TCP connections is useless, we won't be able to reconnect
-		XXX WHY???? XXX
-		\todo Fix this immediately.
-	*/
-	if (!peer->rt_fromcontact && (peer->socket.type & SIP_TRANSPORT_UDP))
+	/* We might not immediately be able to reconnect via TCP, but try caching it anyhow */
+	if (!peer->rt_fromcontact || !sip_cfg.peer_rtupdate)
 		ast_db_put("SIP/Registry", peer->name, data);
 	manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: SIP\r\nPeer: SIP/%s\r\nPeerStatus: Registered\r\nAddress: %s\r\n", peer->name,  ast_sockaddr_stringify(&peer->addr));
 
@@ -27080,7 +27078,8 @@
 	if (ast_test_flag(&peer->flags[1], SIP_PAGE2_ALLOWSUBSCRIBE)) {
 		sip_cfg.allowsubscribe = TRUE;	/* No global ban any more */
 	}
-	if (peer->host_dynamic && !peer->is_realtime) {
+	/* If read-only RT backend, then refresh from local DB cache */
+	if (peer->host_dynamic && !sip_cfg.peer_rtupdate) {
 		reg_source_db(peer);
 	}
 




More information about the svn-commits mailing list