diff --git a/adb/adb.cpp b/adb/adb.cpp index 29c948126..a0501a677 100644 --- a/adb/adb.cpp +++ b/adb/adb.cpp @@ -243,6 +243,11 @@ void handle_offline(atransport *t) D("adb: offline\n"); //Close the associated usb t->online = 0; + + // This is necessary to avoid a race condition that occured when a transport closes + // while a client socket is still active. + close_all_sockets(t); + run_transport_disconnects(t); } diff --git a/adb/transport.cpp b/adb/transport.cpp index afdab86fa..5e4ffbb95 100644 --- a/adb/transport.cpp +++ b/adb/transport.cpp @@ -330,10 +330,6 @@ static void *input_thread(void *_t) put_apacket(p); } - // this is necessary to avoid a race condition that occured when a transport closes - // while a client socket is still active. - close_all_sockets(t); - D("%s: transport input thread is exiting, fd %d\n", t->serial, t->fd); kick_transport(t); transport_unref(t);