diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c
index f8fc27aef4e15295fe5f4779c03941d86e6d7e49..99adbce057dabfb2670467a017e211ee42416231 100644
--- a/servers/slapd/daemon.c
+++ b/servers/slapd/daemon.c
@@ -783,8 +783,8 @@ static int slap_open_listener(
 		       (long) l.sl_sd, err, sock_errstr(err) );
 #endif
 			tcp_close( l.sl_sd );
-			sal++;
-			continue;
+			slap_free_listener_addresses(psal);
+			return -1;
 		}
 
 	switch ( (*sal)->sa_family ) {