diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c
index 93493a9..0c94cde 100644
--- a/src/libusbmuxd.c
+++ b/src/libusbmuxd.c
@@ -158,6 +158,7 @@
  */
 static int connect_usbmuxd_socket()
 {
+	int res = -1;
 	char *usbmuxd_socket_addr = getenv("USBMUXD_SOCKET_ADDRESS");
 	if (usbmuxd_socket_addr) {
 		if (strncmp(usbmuxd_socket_addr, "UNIX:", 5) == 0) {
@@ -165,7 +166,11 @@
 			/* not supported, ignore */
 #else
 			if (usbmuxd_socket_addr[5] != '\0') {
-				return socket_connect_unix(usbmuxd_socket_addr+5);
+				res = socket_connect_unix(usbmuxd_socket_addr+5);
+				if (res < 0) {
+					res = -errno;
+				}
+				return res;
 			}
 #endif
 		} else {
@@ -194,11 +199,14 @@
 					connect_addr[p - usbmuxd_socket_addr] = '\0';
 				}
 				if (connect_addr && *connect_addr != '\0') {
-					int res = socket_connect(connect_addr, port);
+					res = socket_connect(connect_addr, port);
 #ifdef HAVE_INOTIFY
 					use_inotify = 0;
 #endif
 					free(connect_addr);
+					if (res < 0) {
+						res = -errno;
+					}
 					return res;
 				}
 				free(connect_addr);
@@ -206,10 +214,14 @@
 		}
 	}
 #if defined(WIN32) || defined(__CYGWIN__)
-	return socket_connect("127.0.0.1", USBMUXD_SOCKET_PORT);
+	res = socket_connect("127.0.0.1", USBMUXD_SOCKET_PORT);
 #else
-	return socket_connect_unix(USBMUXD_SOCKET_FILE);
+	res = socket_connect_unix(USBMUXD_SOCKET_FILE);
 #endif
+	if (res < 0) {
+		res = -errno;
+	}
+	return res;
 }
 
 static void sanitize_udid(usbmuxd_device_info_t *devinfo)
@@ -1522,9 +1534,8 @@
 retry:
 	sfd = connect_usbmuxd_socket();
 	if (sfd < 0) {
-		result = errno;
-		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n", __func__, strerror(result));
-		return -result;
+		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n", __func__, strerror(-sfd));
+		return sfd;
 	}
 
 	tag = ++use_tag;
@@ -1626,7 +1637,7 @@
 
 	sfd = connect_usbmuxd_socket();
 	if (sfd < 0) {
-		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n", __func__, strerror(errno));
+		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n", __func__, strerror(-sfd));
 		return sfd;
 	}
 
@@ -1668,8 +1679,7 @@
 
 	sfd = connect_usbmuxd_socket();
 	if (sfd < 0) {
-		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n",
-				__func__, strerror(errno));
+		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n", __func__, strerror(-sfd));
 		return sfd;
 	}
 
@@ -1714,8 +1724,7 @@
 
 	sfd = connect_usbmuxd_socket();
 	if (sfd < 0) {
-		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n",
-				__func__, strerror(errno));
+		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n", __func__, strerror(-sfd));
 		return sfd;
 	}
 
@@ -1758,8 +1767,7 @@
 
 	sfd = connect_usbmuxd_socket();
 	if (sfd < 0) {
-		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n",
-				__func__, strerror(errno));
+		LIBUSBMUXD_DEBUG(1, "%s: Error: Connection to usbmuxd failed: %s\n", __func__, strerror(-sfd));
 		return sfd;
 	}
 
