From 15b7465cd22bb9e50750368567a4281d59c1d1b2 Mon Sep 17 00:00:00 2001
From: Luigi Rizzo <rizzo@icir.org>
Date: Mon, 22 May 2006 00:17:46 +0000
Subject: [PATCH] simplify logic in function create_addr()

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

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 04768c49de..397aa2befa 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2190,7 +2190,9 @@ static struct sip_user *find_user(const char *name, int realtime)
 	return u;
 }
 
-/*! \brief Create address structure from peer reference */
+/*! \brief Create address structure from peer reference.
+ *  return -1 on error, 0 on success.
+ */
 static int create_addr_from_peer(struct sip_pvt *r, struct sip_peer *peer)
 {
 	int natflags;
@@ -2283,7 +2285,6 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer)
 	struct hostent *hp;
 	struct ast_hostent ahp;
 	struct sip_peer *p;
-	int found=0;
 	char *port;
 	int portno;
 	char host[MAXHOSTNAMELEN], *hostn;
@@ -2298,14 +2299,10 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer)
 	p = find_peer(peer, NULL, 1);
 
 	if (p) {
-		found++;
-		if (create_addr_from_peer(dialog, p))
-			ASTOBJ_UNREF(p, sip_destroy_peer);
-	}
-	if (!p) {
-		if (found)
-			return -1;
-
+		int res = create_addr_from_peer(dialog, p);
+		ASTOBJ_UNREF(p, sip_destroy_peer);
+		return res;
+	} else {
 		hostn = peer;
 		portno = port ? atoi(port) : DEFAULT_SIP_PORT;
 		if (srvlookup) {
@@ -2330,9 +2327,6 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer)
 			ast_log(LOG_WARNING, "No such host: %s\n", peer);
 			return -1;
 		}
-	} else {
-		ASTOBJ_UNREF(p, sip_destroy_peer);
-		return 0;
 	}
 }
 
-- 
GitLab