diff --git a/src/mserv.c b/src/mserv.c
index faa8295db860caca50198ae8608eac00e661369c..be4b3b3b881c1c3c9bb5657d254b627b4a22f9d3 100644
--- a/src/mserv.c
+++ b/src/mserv.c
@@ -462,7 +462,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;