From 45ecc4b0d3e4f4c24cf33cc712082df7721c5f5f Mon Sep 17 00:00:00 2001
From: Brian West <brian@freeswitch.org>
Date: Wed, 16 Sep 2009 13:55:23 +0000
Subject: [PATCH]  FSCORE-440

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14882 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/switch_utils.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/switch_utils.c b/src/switch_utils.c
index d75533339d..525d4efb02 100644
--- a/src/switch_utils.c
+++ b/src/switch_utils.c
@@ -831,6 +831,7 @@ static int get_netmask(struct sockaddr_in *me, int *mask)
 	INTERFACE_INFO interfaces[20];
 	unsigned long bytes;
 	int interface_count, x;
+	int r = -1;
 
 	*mask = 0;
 
@@ -839,7 +840,8 @@ static int get_netmask(struct sockaddr_in *me, int *mask)
 	}
 
 	if (WSAIoctl(sock, SIO_GET_INTERFACE_LIST, 0, 0, &interfaces, sizeof(interfaces), &bytes, 0, 0) == SOCKET_ERROR) {
-		return -1;
+		r = -1;
+		goto end;
 	}
 
     interface_count = bytes / sizeof(INTERFACE_INFO);
@@ -850,11 +852,14 @@ static int get_netmask(struct sockaddr_in *me, int *mask)
 		if (addr->sin_addr.s_addr == me->sin_addr.s_addr) {
 			struct sockaddr_in *netmask = (struct sockaddr_in *) & (interfaces[x].iiNetmask);
 			*mask = netmask->sin_addr.s_addr;
+			r = 0;
 			break;
 		}
     }
 
-	return 0;
+end:
+	closesocket(sock);
+	return r;
 }
 
 #else