--- wire/client.c	(revision 5082)
+++ wire/client.c	(revision 5145)
@@ -216,13 +216,20 @@
 		
 		wi_address_set_port(address, port);
 		
-		socket = wi_socket_init_with_address(wi_socket_alloc(), address, WI_SOCKET_TCP);
+		socket = wi_autorelease(wi_socket_init_with_address(wi_socket_alloc(), address, WI_SOCKET_TCP));
+		
+		if(!socket) {
+			wr_printf_prefix(WI_STR("Could not open a socket to %@: %m"), ip);
+			
+			continue;
+		}
+		
 		wi_socket_set_interactive(socket, true);
 		
 		if(!wi_socket_connect(socket, wr_socket_context, 10.0)) {
 			wr_printf_prefix(WI_STR("Could not connect to %@: %m"), ip);
 
-			goto next;
+			continue;
 		}
 
 		wr_printf_prefix(WI_STR("Connected using %@/%@/%u bits, logging in..."),
@@ -241,11 +248,7 @@
 		wr_runloop_add_socket(wr_socket, &wr_runloop_server_callback);
 		wr_send_command(WI_STR("HELLO"));
 
-next:
-		wi_release(socket);
-		
-		if(wr_connected)
-			break;
+		break;
 	}
 
 	if(wr_socket)


syntax highlighted by Code2HTML, v. 0.9.1