summaryrefslogtreecommitdiffstats
path: root/src/diagnostics_relay.c
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2012-11-30 15:43:33 +0100
committerGravatar Martin Szulecki2012-11-30 15:43:33 +0100
commit4013a355c623c5de3db48f24e81174df88ef7f2c (patch)
treeeaf85e06c957c8297facffbac2bca2b454759546 /src/diagnostics_relay.c
parent0cc434f7aadc4ea0dd837e9461674eb76f963884 (diff)
downloadlibimobiledevice-4013a355c623c5de3db48f24e81174df88ef7f2c.tar.gz
libimobiledevice-4013a355c623c5de3db48f24e81174df88ef7f2c.tar.bz2
diagnostics_relay: Handle "UnknownRequest" status response correctly
Diffstat (limited to 'src/diagnostics_relay.c')
-rw-r--r--src/diagnostics_relay.c58
1 files changed, 50 insertions, 8 deletions
diff --git a/src/diagnostics_relay.c b/src/diagnostics_relay.c
index 72a5fd7..7178952 100644
--- a/src/diagnostics_relay.c
+++ b/src/diagnostics_relay.c
@@ -26,6 +26,7 @@
26 26
27#define RESULT_SUCCESS 0 27#define RESULT_SUCCESS 0
28#define RESULT_FAILURE 1 28#define RESULT_FAILURE 1
29#define RESULT_UNKNOWN_REQUEST 2
29 30
30/** 31/**
31 * Internally used function for checking the result from a service response 32 * Internally used function for checking the result from a service response
@@ -56,6 +57,8 @@ static int diagnostics_relay_check_result(plist_t dict)
56 ret = RESULT_SUCCESS; 57 ret = RESULT_SUCCESS;
57 } else if (!strcmp(result_value, "Failure")) { 58 } else if (!strcmp(result_value, "Failure")) {
58 ret = RESULT_FAILURE; 59 ret = RESULT_FAILURE;
60 } else if (!strcmp(result_value, "UnknownRequest")) {
61 ret = RESULT_UNKNOWN_REQUEST;
59 } else { 62 } else {
60 debug_info("ERROR: unknown result value '%s'", result_value); 63 debug_info("ERROR: unknown result value '%s'", result_value);
61 } 64 }
@@ -205,10 +208,15 @@ diagnostics_relay_error_t diagnostics_relay_goodbye(diagnostics_relay_client_t c
205 return DIAGNOSTICS_RELAY_E_PLIST_ERROR; 208 return DIAGNOSTICS_RELAY_E_PLIST_ERROR;
206 } 209 }
207 210
208 if (diagnostics_relay_check_result(dict) == RESULT_SUCCESS) { 211 int check = diagnostics_relay_check_result(dict);
209 debug_info("success"); 212 if (check == RESULT_SUCCESS) {
210 ret = DIAGNOSTICS_RELAY_E_SUCCESS; 213 ret = DIAGNOSTICS_RELAY_E_SUCCESS;
214 } else if (check == RESULT_UNKNOWN_REQUEST) {
215 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_REQUEST;
216 } else {
217 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR;
211 } 218 }
219
212 plist_free(dict); 220 plist_free(dict);
213 dict = NULL; 221 dict = NULL;
214 return ret; 222 return ret;
@@ -243,8 +251,13 @@ diagnostics_relay_error_t diagnostics_relay_sleep(diagnostics_relay_client_t cli
243 return DIAGNOSTICS_RELAY_E_PLIST_ERROR; 251 return DIAGNOSTICS_RELAY_E_PLIST_ERROR;
244 } 252 }
245 253
246 if (diagnostics_relay_check_result(dict) == RESULT_SUCCESS) { 254 int check = diagnostics_relay_check_result(dict);
255 if (check == RESULT_SUCCESS) {
247 ret = DIAGNOSTICS_RELAY_E_SUCCESS; 256 ret = DIAGNOSTICS_RELAY_E_SUCCESS;
257 } else if (check == RESULT_UNKNOWN_REQUEST) {
258 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_REQUEST;
259 } else {
260 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR;
248 } 261 }
249 262
250 plist_free(dict); 263 plist_free(dict);
@@ -282,8 +295,13 @@ static diagnostics_relay_error_t internal_diagnostics_relay_action(diagnostics_r
282 return DIAGNOSTICS_RELAY_E_PLIST_ERROR; 295 return DIAGNOSTICS_RELAY_E_PLIST_ERROR;
283 } 296 }
284 297
285 if (diagnostics_relay_check_result(dict) == RESULT_SUCCESS) { 298 int check = diagnostics_relay_check_result(dict);
299 if (check == RESULT_SUCCESS) {
286 ret = DIAGNOSTICS_RELAY_E_SUCCESS; 300 ret = DIAGNOSTICS_RELAY_E_SUCCESS;
301 } else if (check == RESULT_UNKNOWN_REQUEST) {
302 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_REQUEST;
303 } else {
304 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR;
287 } 305 }
288 306
289 plist_free(dict); 307 plist_free(dict);
@@ -348,9 +366,15 @@ diagnostics_relay_error_t diagnostics_relay_request_diagnostics(diagnostics_rela
348 return DIAGNOSTICS_RELAY_E_PLIST_ERROR; 366 return DIAGNOSTICS_RELAY_E_PLIST_ERROR;
349 } 367 }
350 368
351 if (diagnostics_relay_check_result(dict) == RESULT_SUCCESS) { 369 int check = diagnostics_relay_check_result(dict);
370 if (check == RESULT_SUCCESS) {
352 ret = DIAGNOSTICS_RELAY_E_SUCCESS; 371 ret = DIAGNOSTICS_RELAY_E_SUCCESS;
372 } else if (check == RESULT_UNKNOWN_REQUEST) {
373 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_REQUEST;
374 } else {
375 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR;
353 } 376 }
377
354 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) { 378 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) {
355 plist_free(dict); 379 plist_free(dict);
356 return ret; 380 return ret;
@@ -384,9 +408,15 @@ diagnostics_relay_error_t diagnostics_relay_query_mobilegestalt(diagnostics_rela
384 return DIAGNOSTICS_RELAY_E_PLIST_ERROR; 408 return DIAGNOSTICS_RELAY_E_PLIST_ERROR;
385 } 409 }
386 410
387 if (diagnostics_relay_check_result(dict) == RESULT_SUCCESS) { 411 int check = diagnostics_relay_check_result(dict);
412 if (check == RESULT_SUCCESS) {
388 ret = DIAGNOSTICS_RELAY_E_SUCCESS; 413 ret = DIAGNOSTICS_RELAY_E_SUCCESS;
414 } else if (check == RESULT_UNKNOWN_REQUEST) {
415 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_REQUEST;
416 } else {
417 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR;
389 } 418 }
419
390 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) { 420 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) {
391 plist_free(dict); 421 plist_free(dict);
392 return ret; 422 return ret;
@@ -423,9 +453,15 @@ diagnostics_relay_error_t diagnostics_relay_query_ioregistry_entry(diagnostics_r
423 return DIAGNOSTICS_RELAY_E_PLIST_ERROR; 453 return DIAGNOSTICS_RELAY_E_PLIST_ERROR;
424 } 454 }
425 455
426 if (diagnostics_relay_check_result(dict) == RESULT_SUCCESS) { 456 int check = diagnostics_relay_check_result(dict);
457 if (check == RESULT_SUCCESS) {
427 ret = DIAGNOSTICS_RELAY_E_SUCCESS; 458 ret = DIAGNOSTICS_RELAY_E_SUCCESS;
459 } else if (check == RESULT_UNKNOWN_REQUEST) {
460 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_REQUEST;
461 } else {
462 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR;
428 } 463 }
464
429 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) { 465 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) {
430 plist_free(dict); 466 plist_free(dict);
431 return ret; 467 return ret;
@@ -459,9 +495,15 @@ diagnostics_relay_error_t diagnostics_relay_query_ioregistry_plane(diagnostics_r
459 return DIAGNOSTICS_RELAY_E_PLIST_ERROR; 495 return DIAGNOSTICS_RELAY_E_PLIST_ERROR;
460 } 496 }
461 497
462 if (diagnostics_relay_check_result(dict) == RESULT_SUCCESS) { 498 int check = diagnostics_relay_check_result(dict);
499 if (check == RESULT_SUCCESS) {
463 ret = DIAGNOSTICS_RELAY_E_SUCCESS; 500 ret = DIAGNOSTICS_RELAY_E_SUCCESS;
501 } else if (check == RESULT_UNKNOWN_REQUEST) {
502 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_REQUEST;
503 } else {
504 ret = DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR;
464 } 505 }
506
465 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) { 507 if (ret != DIAGNOSTICS_RELAY_E_SUCCESS) {
466 plist_free(dict); 508 plist_free(dict);
467 return ret; 509 return ret;