diff options
-rw-r--r-- | tools/ideviceenterrecovery.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/tools/ideviceenterrecovery.c b/tools/ideviceenterrecovery.c index 822c10a..0cc9936 100644 --- a/tools/ideviceenterrecovery.c +++ b/tools/ideviceenterrecovery.c | |||
@@ -92,25 +92,37 @@ int main(int argc, char *argv[]) | |||
92 | ret = idevice_new(&device, udid); | 92 | ret = idevice_new(&device, udid); |
93 | if (ret != IDEVICE_E_SUCCESS) { | 93 | if (ret != IDEVICE_E_SUCCESS) { |
94 | printf("No device found with udid %s.\n", udid); | 94 | printf("No device found with udid %s.\n", udid); |
95 | return -1; | 95 | return 1; |
96 | } | 96 | } |
97 | 97 | ||
98 | if (LOCKDOWN_E_SUCCESS != (ldret = lockdownd_client_new(device, &client, TOOL_NAME))) { | 98 | if (LOCKDOWN_E_SUCCESS != (ldret = lockdownd_client_new(device, &client, TOOL_NAME))) { |
99 | printf("ERROR: Could not connect to lockdownd, error code %d\n", ldret); | 99 | printf("ERROR: Could not connect to lockdownd: %s (%d)\n", lockdownd_strerror(ldret), ldret); |
100 | idevice_free(device); | 100 | idevice_free(device); |
101 | return -1; | 101 | return 1; |
102 | } | 102 | } |
103 | 103 | ||
104 | /* run query and output information */ | 104 | int res = 0; |
105 | printf("Telling device with udid %s to enter recovery mode.\n", udid); | 105 | printf("Telling device with udid %s to enter recovery mode.\n", udid); |
106 | if(lockdownd_enter_recovery(client) != LOCKDOWN_E_SUCCESS) | 106 | ldret = lockdownd_enter_recovery(client); |
107 | { | 107 | if (ldret == LOCKDOWN_E_SESSION_INACTIVE) { |
108 | lockdownd_client_free(client); | ||
109 | client = NULL; | ||
110 | if (LOCKDOWN_E_SUCCESS != (ldret = lockdownd_client_new_with_handshake(device, &client, TOOL_NAME))) { | ||
111 | printf("ERROR: Could not connect to lockdownd: %s (%d)\n", lockdownd_strerror(ldret), ldret); | ||
112 | idevice_free(device); | ||
113 | return 1; | ||
114 | } | ||
115 | ldret = lockdownd_enter_recovery(client); | ||
116 | } | ||
117 | if (ldret != LOCKDOWN_E_SUCCESS) { | ||
108 | printf("Failed to enter recovery mode.\n"); | 118 | printf("Failed to enter recovery mode.\n"); |
119 | res = 1; | ||
120 | } else { | ||
121 | printf("Device is successfully switching to recovery mode.\n"); | ||
109 | } | 122 | } |
110 | printf("Device is successfully switching to recovery mode.\n"); | ||
111 | 123 | ||
112 | lockdownd_client_free(client); | 124 | lockdownd_client_free(client); |
113 | idevice_free(device); | 125 | idevice_free(device); |
114 | 126 | ||
115 | return 0; | 127 | return res; |
116 | } | 128 | } |