From ab3c603b1c5025d7be564a260cad5e0321f912f1 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Thu, 6 May 2004 01:33:24 +0000
Subject: [PATCH] If user fails host access, search for peers too

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2901 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 3319508f98..54be3f6a61 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -4492,6 +4492,12 @@ static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, cha
 					p->noncodeccapability &= ~AST_RTP_DTMF;
 			}
 		}
+		if (user && sip_debug_test_addr(sin))
+			ast_verbose("Found user '%s'\n", user->name);
+	} else {
+		if (user && sip_debug_test_addr(sin))
+			ast_verbose("Found user '%s', but fails host access\n", user->name);
+		user = NULL;
 	}
 	ast_mutex_unlock(&userl.lock);
 	if (!user) {
@@ -4504,6 +4510,8 @@ static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, cha
 		/* peer = find_peer(NULL, sin); */
 		ast_mutex_unlock(&peerl.lock);
 		if (peer) {
+				if (sip_debug_test_addr(sin))
+					ast_verbose("Found peer '%s'\n", peer->name);
 				/* Take the peer */
 				p->nat = peer->nat;
 				if (p->rtp) {
@@ -4547,7 +4555,10 @@ static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, cha
 				}
 				free(peer);
 			}
-		}
+		} else
+			if (sip_debug_test_addr(sin))
+				ast_verbose("Found no matching peer or user for '%s:%d'\n", inet_ntoa(p->recv.sin_addr), ntohs(p->recv.sin_port));
+
 	}
 	return res;
 }
-- 
GitLab