diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libusbmuxd.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c index a8586f2..90ae6e6 100644 --- a/src/libusbmuxd.c +++ b/src/libusbmuxd.c @@ -180,8 +180,10 @@ static int receive_packet(int sfd, struct usbmuxd_header *header, void **payload recv_len = socket_receive_timeout(sfd, &hdr, sizeof(hdr), 0, timeout); if (recv_len < 0) { + DEBUG(1, "%s: Error receiving packet: %d\n", __func__, recv_len); return recv_len; } else if ((size_t)recv_len < sizeof(hdr)) { + DEBUG(1, "%s: Received packet is too small, got %d bytes!\n", __func__, recv_len); return recv_len; } @@ -319,17 +321,10 @@ static int usbmuxd_get_result(int sfd, uint32_t tag, uint32_t *result, void **re *result_plist = NULL; } - if ((recv_len = receive_packet(sfd, &hdr, (void**)&res, 5000)) < 0) { - DEBUG(1, "%s: Error receiving packet: %d\n", __func__, recv_len); - if (res) - free(res); - return recv_len; - } - if ((size_t)recv_len < sizeof(hdr)) { - DEBUG(1, "%s: Received packet is too small!\n", __func__); - if (res) - free(res); - return -EPROTO; + recv_len = receive_packet(sfd, &hdr, (void**)&res, 5000); + if (recv_len < 0 || (size_t)recv_len < sizeof(hdr)) { + free(res); + return (recv_len < 0 ? recv_len : -EPROTO); } if (hdr.message == MESSAGE_RESULT) { @@ -665,6 +660,7 @@ static int get_next_event(int sfd, usbmuxd_event_cb_t callback, void *user_data) /* block until we receive something */ if (receive_packet(sfd, &hdr, &payload, 0) < 0) { + DEBUG(1, "%s: Error in usbmuxd connection, disconnecting all devices!\n", __func__); // when then usbmuxd connection fails, // generate remove events for every device that // is still present so applications know about it |