diff options
| author | 2013-09-24 03:46:22 +0200 | |
|---|---|---|
| committer | 2013-09-24 03:46:22 +0200 | |
| commit | 4356659dfad264fb89bfcf0e4410797db4e908a8 (patch) | |
| tree | 403f48351bc28c2b82d67c73112a7df0015162a4 | |
| parent | 6b42686e8addecf76beaa171427a81fd65c6a895 (diff) | |
| download | usbmuxd-4356659dfad264fb89bfcf0e4410797db4e908a8.tar.gz usbmuxd-4356659dfad264fb89bfcf0e4410797db4e908a8.tar.bz2 | |
preflight: handle invalid pair records properly
| -rw-r--r-- | src/preflight.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/preflight.c b/src/preflight.c index 30a2217..97fdb8b 100644 --- a/src/preflight.c +++ b/src/preflight.c | |||
| @@ -115,9 +115,10 @@ static void* preflight_worker_handle_device_add(void* userdata) | |||
| 115 | 115 | ||
| 116 | idevice_t dev = (idevice_t)_dev; | 116 | idevice_t dev = (idevice_t)_dev; |
| 117 | 117 | ||
| 118 | lockdownd_client_t lockdown; | 118 | lockdownd_client_t lockdown = NULL; |
| 119 | lockdownd_error_t lerr; | 119 | lockdownd_error_t lerr; |
| 120 | 120 | ||
| 121 | retry: | ||
| 121 | lerr = lockdownd_client_new(dev, &lockdown, "usbmuxd"); | 122 | lerr = lockdownd_client_new(dev, &lockdown, "usbmuxd"); |
| 122 | if (lerr != LOCKDOWN_E_SUCCESS) { | 123 | if (lerr != LOCKDOWN_E_SUCCESS) { |
| 123 | usbmuxd_log(LL_ERROR, "%s: ERROR: Could not connect to lockdownd on device %s, lockdown error %d", __func__, _dev->udid, lerr); | 124 | usbmuxd_log(LL_ERROR, "%s: ERROR: Could not connect to lockdownd on device %s, lockdown error %d", __func__, _dev->udid, lerr); |
| @@ -149,10 +150,23 @@ static void* preflight_worker_handle_device_add(void* userdata) | |||
| 149 | } | 150 | } |
| 150 | 151 | ||
| 151 | usbmuxd_log(LL_INFO, "%s: StartSession failed on device %s, lockdown error %d", __func__, _dev->udid, lerr); | 152 | usbmuxd_log(LL_INFO, "%s: StartSession failed on device %s, lockdown error %d", __func__, _dev->udid, lerr); |
| 152 | if (lerr == LOCKDOWN_E_INVALID_HOST_ID) { | 153 | switch (lerr) { |
| 154 | case LOCKDOWN_E_INVALID_HOST_ID: | ||
| 153 | usbmuxd_log(LL_INFO, "%s: Device %s is not paired with this host.", __func__, _dev->udid); | 155 | usbmuxd_log(LL_INFO, "%s: Device %s is not paired with this host.", __func__, _dev->udid); |
| 154 | } else { | 156 | break; |
| 157 | case LOCKDOWN_E_SSL_ERROR: | ||
| 158 | usbmuxd_log(LL_ERROR, "%s: The stored pair record for device %s is invalid. Removing.", __func__, _dev->udid); | ||
| 159 | if (userpref_remove_device_record(_dev->udid) == 0) { | ||
| 160 | lockdownd_client_free(lockdown); | ||
| 161 | lockdown = NULL; | ||
| 162 | goto retry; | ||
| 163 | } else { | ||
| 164 | usbmuxd_log(LL_ERROR, "%s: Could not remove pair record for device %s\n", __func__, _dev->udid); | ||
| 165 | } | ||
| 166 | break; | ||
| 167 | default: | ||
| 155 | is_device_paired = 1; | 168 | is_device_paired = 1; |
| 169 | break; | ||
| 156 | } | 170 | } |
| 157 | 171 | ||
| 158 | plist_t value = NULL; | 172 | plist_t value = NULL; |
