diff options
author | Simon Søndergaard | 2019-09-18 10:26:48 +0200 |
---|---|---|
committer | Nikias Bassen | 2021-06-22 10:53:12 +0200 |
commit | 7eb35833ac16d02b9f6609567d856aa932b99338 (patch) | |
tree | 99fd64301b8fbd17d9066a52e84c24223f8ef968 | |
parent | ca324155f8b33babf907704828c7903608db0aa2 (diff) | |
download | libimobiledevice-7eb35833ac16d02b9f6609567d856aa932b99338.tar.gz libimobiledevice-7eb35833ac16d02b9f6609567d856aa932b99338.tar.bz2 |
installation_proxy: Ignore non-status messages instead of terminating loop
Some iOS versions will interleave a CFBundleIdentifier message into the Status
messages, and the code would treat the CFBundleIdentifier message as an error.
Terminating the loop, never seeing the last message - and even worse - never
calling back to ideviceinstaller that would be stuck waiting for a callback
with a message where Status == Complete.
-rw-r--r-- | src/installation_proxy.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/installation_proxy.c b/src/installation_proxy.c index 9a6f1ab..ebf2d03 100644 --- a/src/installation_proxy.c +++ b/src/installation_proxy.c @@ -367,17 +367,14 @@ static instproxy_error_t instproxy_receive_status_loop(instproxy_client_t client /* check status from response */ instproxy_status_get_name(node, &status_name); if (!status_name) { - debug_info("failed to retrieve name from status response with error %d.", res); - complete = 1; - } - - if (status_name) { + debug_info("ignoring message without Status key:"); + debug_plist(node); + } else { if (!strcmp(status_name, "Complete")) { complete = 1; } else { res = INSTPROXY_E_OP_IN_PROGRESS; } - #ifndef STRIP_DEBUG_CODE percent_complete = -1; instproxy_status_get_percent_complete(node, &percent_complete); |