diff options
| author | 2019-10-04 03:14:04 +0200 | |
|---|---|---|
| committer | 2019-10-04 03:14:04 +0200 | |
| commit | c41226df521de464a89f3d027f3e67d13d10d96f (patch) | |
| tree | 585c80e88a56f35c022f85a759b9e775bad11733 | |
| parent | 1afa7350f9da03365f3b8f98dcb763b396e52723 (diff) | |
| download | usbmuxd-c41226df521de464a89f3d027f3e67d13d10d96f.tar.gz usbmuxd-c41226df521de464a89f3d027f3e67d13d10d96f.tar.bz2 | |
preflight: Let insecure notification proxy terminate when pairing is done
| -rw-r--r-- | src/preflight.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/preflight.c b/src/preflight.c index 15429c0..f46786e 100644 --- a/src/preflight.c +++ b/src/preflight.c | |||
| @@ -59,6 +59,7 @@ struct cb_data { | |||
| 59 | idevice_t dev; | 59 | idevice_t dev; |
| 60 | np_client_t np; | 60 | np_client_t np; |
| 61 | int is_device_connected; | 61 | int is_device_connected; |
| 62 | int is_finished; | ||
| 62 | }; | 63 | }; |
| 63 | 64 | ||
| 64 | static void lockdownd_set_untrusted_host_buid(lockdownd_client_t lockdown) | 65 | static void lockdownd_set_untrusted_host_buid(lockdownd_client_t lockdown) |
| @@ -97,6 +98,7 @@ static void np_callback(const char* notification, void* userdata) | |||
| 97 | lerr = lockdownd_client_new(dev, &lockdown, "usbmuxd"); | 98 | lerr = lockdownd_client_new(dev, &lockdown, "usbmuxd"); |
| 98 | if (lerr != LOCKDOWN_E_SUCCESS) { | 99 | if (lerr != LOCKDOWN_E_SUCCESS) { |
| 99 | usbmuxd_log(LL_ERROR, "%s: ERROR: Could not connect to lockdownd on device %s, lockdown error %d", __func__, _dev->udid, lerr); | 100 | usbmuxd_log(LL_ERROR, "%s: ERROR: Could not connect to lockdownd on device %s, lockdown error %d", __func__, _dev->udid, lerr); |
| 101 | cbdata->is_finished = 1; | ||
| 100 | return; | 102 | return; |
| 101 | } | 103 | } |
| 102 | 104 | ||
| @@ -104,10 +106,11 @@ static void np_callback(const char* notification, void* userdata) | |||
| 104 | if (lerr != LOCKDOWN_E_SUCCESS) { | 106 | if (lerr != LOCKDOWN_E_SUCCESS) { |
| 105 | usbmuxd_log(LL_ERROR, "%s: ERROR: Pair failed for device %s, lockdown error %d", __func__, _dev->udid, lerr); | 107 | usbmuxd_log(LL_ERROR, "%s: ERROR: Pair failed for device %s, lockdown error %d", __func__, _dev->udid, lerr); |
| 106 | lockdownd_client_free(lockdown); | 108 | lockdownd_client_free(lockdown); |
| 109 | cbdata->is_finished = 1; | ||
| 107 | return; | 110 | return; |
| 108 | } | 111 | } |
| 109 | lockdownd_client_free(lockdown); | 112 | lockdownd_client_free(lockdown); |
| 110 | // device will reconnect by itself at this point. | 113 | cbdata->is_finished = 1; |
| 111 | 114 | ||
| 112 | } else if (strcmp(notification, "com.apple.mobile.lockdown.request_host_buid") == 0) { | 115 | } else if (strcmp(notification, "com.apple.mobile.lockdown.request_host_buid") == 0) { |
| 113 | lerr = lockdownd_client_new(cbdata->dev, &lockdown, "usbmuxd"); | 116 | lerr = lockdownd_client_new(cbdata->dev, &lockdown, "usbmuxd"); |
| @@ -255,6 +258,7 @@ retry: | |||
| 255 | cbdata.dev = dev; | 258 | cbdata.dev = dev; |
| 256 | cbdata.np = np; | 259 | cbdata.np = np; |
| 257 | cbdata.is_device_connected = 1; | 260 | cbdata.is_device_connected = 1; |
| 261 | cbdata.is_finished = 0; | ||
| 258 | 262 | ||
| 259 | np_set_notify_callback(np, np_callback, (void*)&cbdata); | 263 | np_set_notify_callback(np, np_callback, (void*)&cbdata); |
| 260 | device_set_preflight_cb_data(info->id, (void*)&cbdata); | 264 | device_set_preflight_cb_data(info->id, (void*)&cbdata); |
| @@ -273,7 +277,7 @@ retry: | |||
| 273 | /* make device visible anyways */ | 277 | /* make device visible anyways */ |
| 274 | client_device_add(info); | 278 | client_device_add(info); |
| 275 | 279 | ||
| 276 | while (cbdata.np && cbdata.is_device_connected == 1) { | 280 | while (cbdata.np && cbdata.is_device_connected && !cbdata.is_finished) { |
| 277 | sleep(1); | 281 | sleep(1); |
| 278 | } | 282 | } |
| 279 | device_set_preflight_cb_data(info->id, NULL); | 283 | device_set_preflight_cb_data(info->id, NULL); |
