summaryrefslogtreecommitdiffstats
path: root/src/property_list_service.c
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2013-09-19 05:21:33 +0200
committerGravatar Nikias Bassen2013-09-19 05:21:33 +0200
commita84e717eecf2dda8221a8aa8569148c01f2505b0 (patch)
tree96ac46767ff533d10cb02a77ea576f4d106446df /src/property_list_service.c
parent193d032a040935664e7428d366345a6f6644a29a (diff)
downloadlibimobiledevice-a84e717eecf2dda8221a8aa8569148c01f2505b0.tar.gz
libimobiledevice-a84e717eecf2dda8221a8aa8569148c01f2505b0.tar.bz2
property_list_service: handle timeout condition on receive
this adds the new error code PROPERTY_LIST_SERVICE_E_TIMEOUT that occurs if the given timeout is reached when trying to receive data.
Diffstat (limited to 'src/property_list_service.c')
-rw-r--r--src/property_list_service.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/property_list_service.c b/src/property_list_service.c
index f1c3f86..28739c7 100644
--- a/src/property_list_service.c
+++ b/src/property_list_service.c
@@ -223,7 +223,10 @@ static property_list_service_error_t internal_plist_receive_timeout(property_lis
return PROPERTY_LIST_SERVICE_E_INVALID_ARG;
}
- service_receive_with_timeout(client->parent, (char*)&pktlen, sizeof(pktlen), &bytes, timeout);
+ service_error_t serr = service_receive_with_timeout(client->parent, (char*)&pktlen, sizeof(pktlen), &bytes, timeout);
+ if ((serr == SERVICE_E_SUCCESS) && (bytes == 0)) {
+ return PROPERTY_LIST_SERVICE_E_TIMEOUT;
+ }
debug_info("initial read=%i", bytes);
if (bytes < 4) {
debug_info("initial read failed!");