From 77e8e5851d3b951b5382663bd50f1f83cb531eb2 Mon Sep 17 00:00:00 2001 From: Benoit Goby Date: Tue, 15 Jan 2013 12:36:47 -0800 Subject: [PATCH] adb: Add "unauthorized" connection state Add a new connection state, so that devices, that require confirmation to allow adb, appear as "unauthorized" in the adb devices lists. Change-Id: Ib4264bc5736dedecf05bcf8e31896f4d7a91fad8 --- adb/adb.c | 3 +++ adb/adb.h | 1 + adb/transport.c | 7 +++++++ 3 files changed, 11 insertions(+) diff --git a/adb/adb.c b/adb/adb.c index 8be576567..744e847fa 100644 --- a/adb/adb.c +++ b/adb/adb.c @@ -402,6 +402,8 @@ static char *connection_state_name(atransport *t) return "device"; case CS_OFFLINE: return "offline"; + case CS_UNAUTHORIZED: + return "unauthorized"; default: return "unknown"; } @@ -531,6 +533,7 @@ void handle_packet(apacket *p, atransport *t) case A_AUTH: if (p->msg.arg0 == ADB_AUTH_TOKEN) { + t->connection_state = CS_UNAUTHORIZED; t->key = adb_auth_nextkey(t->key); if (t->key) { send_auth_response(p->data, p->msg.data_length, t); diff --git a/adb/adb.h b/adb/adb.h index 9da8af8bf..a01d460e4 100644 --- a/adb/adb.h +++ b/adb/adb.h @@ -468,6 +468,7 @@ int connection_state(atransport *t); #define CS_RECOVERY 4 #define CS_NOPERM 5 /* Insufficient permissions to communicate with the device */ #define CS_SIDELOAD 6 +#define CS_UNAUTHORIZED 7 extern int HOST; extern int SHELL_EXIT_NOTIFY_FD; diff --git a/adb/transport.c b/adb/transport.c index 9fd6cc2e6..b4abb66ec 100644 --- a/adb/transport.c +++ b/adb/transport.c @@ -851,6 +851,12 @@ retry: adb_mutex_unlock(&transport_lock); if (result) { + if (result->connection_state == CS_UNAUTHORIZED) { + if (error_out) + *error_out = "device unauthorized. Please check the confirmation dialog on your device."; + result = NULL; + } + /* offline devices are ignored -- they are either being born or dying */ if (result && result->connection_state == CS_OFFLINE) { if (error_out) @@ -888,6 +894,7 @@ static const char *statename(atransport *t) case CS_RECOVERY: return "recovery"; case CS_SIDELOAD: return "sideload"; case CS_NOPERM: return "no permissions"; + case CS_UNAUTHORIZED: return "unauthorized"; default: return "unknown"; } }