diff --git a/src/xpdev/multisock.c b/src/xpdev/multisock.c
index de396d37b2b063d125806849b5a69a5505d0a233..b781d124bf96400467d6967cfa22eb3a0abc6b9f 100644
--- a/src/xpdev/multisock.c
+++ b/src/xpdev/multisock.c
@@ -74,9 +74,7 @@ BOOL xpms_add(struct xpms_set *xpms_set, int domain, int type,
 			/* This may be a partial failure */
 			if(xpms_set->lprintf)
 				xpms_set->lprintf(LOG_CRIT, "!ERROR out of memory adding to multisocket");
-			if(added==0)
-				return FALSE;
-			return TRUE;
+			break;
 		}
 		xpms_set->socks=new_socks;
 		xpms_set->socks[xpms_set->sock_count].address = strdup(addr);
@@ -128,6 +126,7 @@ BOOL xpms_add(struct xpms_set *xpms_set, int domain, int type,
 		xpms_set->sock_count++;
 	}
 
+	freeaddrinfo(res);
 	if(added)
 		return TRUE;
 	return FALSE;