From f725355489c4a203012ba74a58483945772e6578 Mon Sep 17 00:00:00 2001 From: Martin Szulecki Date: Thu, 21 Jan 2010 11:54:02 +0100 Subject: Add LOCKDOWN_E_INVALID_SERVICE error and functionality This error is returned if the service does not exist on the device. It comes handy to detect if for instance the AFC2 service is actually setup on a device or not. --- include/libiphone/lockdown.h | 1 + src/lockdown.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/libiphone/lockdown.h b/include/libiphone/lockdown.h index 7fa5384..e80851b 100644 --- a/include/libiphone/lockdown.h +++ b/include/libiphone/lockdown.h @@ -48,6 +48,7 @@ extern "C" { #define LOCKDOWN_E_PASSWORD_PROTECTED -14 #define LOCKDOWN_E_NO_RUNNING_SESSION -15 #define LOCKDOWN_E_INVALID_HOST_ID -16 +#define LOCKDOWN_E_INVALID_SERVICE -17 #define LOCKDOWN_E_UNKNOWN_ERROR -256 diff --git a/src/lockdown.c b/src/lockdown.c index 1befb72..8f15b3f 100644 --- a/src/lockdown.c +++ b/src/lockdown.c @@ -1262,9 +1262,18 @@ lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, const char if (port && ret == LOCKDOWN_E_SUCCESS) *port = port_loc; } - } - else + } else { ret = LOCKDOWN_E_START_SERVICE_FAILED; + plist_t error_node = plist_dict_get_item(dict, "Error"); + if (error_node && PLIST_STRING == plist_get_node_type(error_node)) { + char *error = NULL; + plist_get_string_val(error_node, &error); + if (!strcmp(error, "InvalidService")) { + ret = LOCKDOWN_E_INVALID_SERVICE; + } + free(error); + } + } plist_free(dict); dict = NULL; -- cgit v1.1-32-gdbae