diff options
Diffstat (limited to 'src/fdr.c')
-rw-r--r-- | src/fdr.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -143,14 +143,20 @@ int fdr_poll_and_handle_message(fdr_client_t fdr) } device_error = idevice_connection_receive_timeout(fdr->connection, (char *)&cmd, sizeof(cmd), &bytes, 20000); - if (device_error != IDEVICE_E_SUCCESS) { +#ifdef HAVE_IDEVICE_E_TIMEOUT + if (device_error == IDEVICE_E_TIMEOUT || (device_error == IDEVICE_E_SUCCESS && bytes != sizeof(cmd))) +#else + if (device_error == IDEVICE_ESUCCESS && bytes != sizeof(cmd)) +#endif + { + debug("FDR %p timeout waiting for command\n", fdr); + return 0; + } + else if (device_error != IDEVICE_E_SUCCESS) { if (fdr->connection) { error("ERROR: Unable to receive message from FDR %p (%d). %u/%d bytes\n", fdr, device_error, bytes, sizeof(cmd)); } return -1; - } else if (bytes != sizeof(cmd)) { - debug("FDR %p timeout waiting for command\n", fdr); - return 0; } if (cmd == FDR_SYNC_MSG) { @@ -540,12 +546,18 @@ static int fdr_handle_proxy_cmd(fdr_client_t fdr) while (1) { bytes = 0; device_error = idevice_connection_receive_timeout(fdr->connection, buf, sizeof(buf), &bytes, 100); - if (device_error != IDEVICE_E_SUCCESS) { +#ifdef HAVE_IDEVICE_E_TIMEOUT + if (device_error == IDEVICE_E_TIMEOUT || (device_error == IDEVICE_E_SUCCESS && !bytes)) +#else + if (device_error == IDEVICE_E_SUCCESS && !bytes) +#endif + { + //debug("WARNING: Timeout waiting for proxy payload. %p\n", fdr); + } + else if (device_error != IDEVICE_E_SUCCESS) { error("ERROR: FDR %p Unable to receive proxy payload (%d)\n", fdr, device_error); res = -1; break; - } else if (!bytes) { - //debug("WARNING: Timeout waiting for proxy payload. %p\n", fdr); } if (bytes) { debug("FDR %p got payload of %u bytes, now try to proxy it\n", fdr, bytes); |