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
This commit is contained in:
Benoit Goby 2013-01-15 12:36:47 -08:00
parent 345cb066d2
commit 77e8e5851d
3 changed files with 11 additions and 0 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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";
}
}