Improve error checking around usbmuxd_get_result()
diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c
index 6a6b3e6..2d27ba3 100644
--- a/src/libusbmuxd.c
+++ b/src/libusbmuxd.c
@@ -287,10 +287,10 @@
 	}
 
 	if ((recv_len = receive_packet(sfd, &hdr, (void**)&res, 5000)) < 0) {
-		DEBUG(1, "%s: Error receiving packet: %d\n", __func__, errno);
+		DEBUG(1, "%s: Error receiving packet: %d\n", __func__, recv_len);
 		if (res)
 			free(res);
-		return -errno;
+		return recv_len;
 	}
 	if ((size_t)recv_len < sizeof(hdr)) {
 		DEBUG(1, "%s: Received packet is too small!\n", __func__);
@@ -594,7 +594,7 @@
 		socket_close(sfd);
 		return -1;
 	}
-	if (usbmuxd_get_result(sfd, tag, &res, NULL) && (res != 0)) {
+	if ((usbmuxd_get_result(sfd, tag, &res, NULL) == 1) && (res != 0)) {
 		socket_close(sfd);
 		if ((res == RESULT_BADVERSION) && (proto_version == 1)) {
 			proto_version = 0;
@@ -603,7 +603,6 @@
 		DEBUG(1, "%s: ERROR: did not get OK but %d\n", __func__, res);
 		return -1;
 	}
-
 	return sfd;
 }
 
@@ -818,7 +817,7 @@
 	if ((proto_version == 1) && (try_list_devices)) {
 		if (send_list_devices_packet(sfd, tag) > 0) {
 			plist_t list = NULL;
-			if (usbmuxd_get_result(sfd, tag, &res, &list) && (res == 0)) {
+			if ((usbmuxd_get_result(sfd, tag, &res, &list) == 1) && (res == 0)) {
 				plist_t devlist = plist_dict_get_item(list, "DeviceList");
 				if (devlist && plist_get_node_type(devlist) == PLIST_ARRAY) {
 					collection_init(&tmpdevs);
@@ -857,7 +856,7 @@
 	if (send_listen_packet(sfd, tag) > 0) {
 		res = -1;
 		// get response
-		if (usbmuxd_get_result(sfd, tag, &res, NULL) && (res == 0)) {
+		if ((usbmuxd_get_result(sfd, tag, &res, NULL) == 1) && (res == 0)) {
 			listen_success = 1;
 		} else {
 			socket_close(sfd);
@@ -1006,7 +1005,7 @@
 	} else {
 		// read ACK
 		DEBUG(2, "%s: Reading connect result...\n", __func__);
-		if (usbmuxd_get_result(sfd, tag, &res, NULL)) {
+		if (usbmuxd_get_result(sfd, tag, &res, NULL) == 1) {
 			if (res == 0) {
 				DEBUG(2, "%s: Connect success!\n", __func__);
 				connected = 1;
@@ -1100,12 +1099,13 @@
 	} else {
 		uint32_t rc = 0;
 		plist_t pl = NULL;
-		if (usbmuxd_get_result(sfd, tag, &rc, &pl) && (rc == 0)) {
+		ret = usbmuxd_get_result(sfd, tag, &rc, &pl);
+		if ((ret == 1) && (rc == 0)) {
 			plist_t node = plist_dict_get_item(pl, "BUID");
 			if (node && plist_get_node_type(node) == PLIST_STRING) {
 				plist_get_string_val(node, buid);
 			}
-		} else {
+		} else if (ret == 1) {
 			ret = -(int)rc;
 		}
 		plist_free(pl);
@@ -1141,7 +1141,8 @@
 	} else {
 		uint32_t rc = 0;
 		plist_t pl = NULL;
-		if (usbmuxd_get_result(sfd, tag, &rc, &pl) && (rc == 0)) {
+		ret = usbmuxd_get_result(sfd, tag, &rc, &pl);
+		if ((ret == 1) && (rc == 0)) {
 			plist_t node = plist_dict_get_item(pl, "PairRecordData");
 			if (node && plist_get_node_type(node) == PLIST_DATA) {
 				uint64_t int64val = 0;
@@ -1151,7 +1152,7 @@
 					ret = 0;
 				}
 			}
-		} else {
+		} else if (ret == 1) {
 			ret = -(int)rc;
 		}
 		plist_free(pl);
@@ -1185,9 +1186,10 @@
 		DEBUG(1, "%s: Error sending SavePairRecord message!\n", __func__);
 	} else {
 		uint32_t rc = 0;
-		if (usbmuxd_get_result(sfd, tag, &rc, NULL) && (rc == 0)) {
+		ret = usbmuxd_get_result(sfd, tag, &rc, NULL);
+		if ((ret == 1) && (rc == 0)) {
 			ret = 0;
-		} else {
+		} else if (ret == 1) {
 			ret = -(int)rc;
 			DEBUG(1, "%s: Error: saving pair record failed: %d\n", __func__, ret);
 		}
@@ -1221,9 +1223,10 @@
 		DEBUG(1, "%s: Error sending DeletePairRecord message!\n", __func__);
 	} else {
 		uint32_t rc = 0;
-		if (usbmuxd_get_result(sfd, tag, &rc, NULL) && (rc == 0)) {
+		ret = usbmuxd_get_result(sfd, tag, &rc, NULL);
+		if ((ret == 1) && (rc == 0)) {
 			ret = 0;
-		} else {
+		} else if (ret == 1) {
 			ret = -(int)rc;
 			DEBUG(1, "%s: Error: deleting pair record failed: %d\n", __func__, ret);
 		}