summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2010-01-25 23:36:24 +0100
committerGravatar Matt Colyer2010-01-26 08:16:17 -0800
commit0cf8b328c0bfa7f860ba54a484d28ec227d33efc (patch)
treeb85b9a9a45a1a3091739315ad71ee061c134c3f7 /src
parentb42576baef5775d46a477219de572f68024b1aac (diff)
downloadlibimobiledevice-0cf8b328c0bfa7f860ba54a484d28ec227d33efc.tar.gz
libimobiledevice-0cf8b328c0bfa7f860ba54a484d28ec227d33efc.tar.bz2
Auto-pair devices within lockdownd_client_new_with_handshake()
This brings back the automatic pairing feature if not yet paired. [#111 state:resolved]
Diffstat (limited to 'src')
-rw-r--r--src/lockdown.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/lockdown.c b/src/lockdown.c
index 792dd33..108b558 100644
--- a/src/lockdown.c
+++ b/src/lockdown.c
@@ -661,6 +661,14 @@ lockdownd_error_t lockdownd_client_new_with_handshake(iphone_device_t device, lo
661 /* in any case, we need to validate pairing to receive trusted host status */ 661 /* in any case, we need to validate pairing to receive trusted host status */
662 ret = lockdownd_validate_pair(client_loc, NULL); 662 ret = lockdownd_validate_pair(client_loc, NULL);
663 663
664 /* if not paired yet, let's do it now */
665 if (LOCKDOWN_E_INVALID_HOST_ID == ret) {
666 ret = lockdownd_pair(client_loc, NULL);
667 if (LOCKDOWN_E_SUCCESS == ret) {
668 ret = lockdownd_validate_pair(client_loc, NULL);
669 }
670 }
671
664 if (LOCKDOWN_E_SUCCESS == ret) { 672 if (LOCKDOWN_E_SUCCESS == ret) {
665 ret = lockdownd_start_session(client_loc, host_id, NULL, NULL); 673 ret = lockdownd_start_session(client_loc, host_id, NULL, NULL);
666 if (LOCKDOWN_E_SUCCESS != ret) { 674 if (LOCKDOWN_E_SUCCESS != ret) {
@@ -825,11 +833,16 @@ static lockdownd_error_t lockdownd_do_pair(lockdownd_client_t client, lockdownd_
825 if (error_node) { 833 if (error_node) {
826 char *value = NULL; 834 char *value = NULL;
827 plist_get_string_val(error_node, &value); 835 plist_get_string_val(error_node, &value);
828 /* the first pairing fails if the device is password protected */ 836 if (value) {
829 if (value && !strcmp(value, "PasswordProtected")) { 837 /* the first pairing fails if the device is password protected */
830 ret = LOCKDOWN_E_PASSWORD_PROTECTED; 838 if (!strcmp(value, "PasswordProtected")) {
839 ret = LOCKDOWN_E_PASSWORD_PROTECTED;
840 } else if (!strcmp(value, "InvalidHostID")) {
841 ret = LOCKDOWN_E_INVALID_HOST_ID;
842 }
831 free(value); 843 free(value);
832 } 844 }
845
833 plist_free(error_node); 846 plist_free(error_node);
834 error_node = NULL; 847 error_node = NULL;
835 } 848 }