From 7eb35833ac16d02b9f6609567d856aa932b99338 Mon Sep 17 00:00:00 2001 From: Simon Søndergaard Date: Wed, 18 Sep 2019 10:26:48 +0200 Subject: 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. --- src/installation_proxy.c | 9 +++------ 1 file 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); -- cgit v1.1-32-gdbae