diff --git a/src/mserv.c b/src/mserv.c
index 1052de80c1a56926058e569becb3ae2542510bb4..a842e92e9951db740a91ca910e3201427469ac97 100644
--- a/src/mserv.c
+++ b/src/mserv.c
@@ -433,7 +433,10 @@ static INT32 MS_Connect(const char *ip_addr, const char *str_port, INT32 async)
 		{
 			c = MS_SubConnect(ip_addr, str_port, async, aip->ai_addr, aip->ai_addrlen);
 			if (c == 0)
+			{
+				I_freeaddrinfo(ai);
 				return 0;
+			}
 		}
 		I_freeaddrinfo(ai);
 		return c;