adb: add reconnect command.
Add reconnect command for debugging. `reconnect` kicks a transport
from the host side, `reconnect device` kicks a transport from
the device side. They can be used to produce transport errors.
Bug: 25935458
Change-Id: I47daa338796b561941e7aba44a51a6dd117d1e98
(cherry picked from commit 1f4ec19e499ba981e4117f647d191603c2713e79)
diff --git a/adb/transport.cpp b/adb/transport.cpp
index 8ca1e49..d0c0961 100644
--- a/adb/transport.cpp
+++ b/adb/transport.cpp
@@ -304,7 +304,11 @@
void kick_transport(atransport* t) {
adb_mutex_lock(&transport_lock);
- kick_transport_locked(t);
+ // As kick_transport() can be called from threads without guarantee that t is valid,
+ // check if the transport is in transport_list first.
+ if (std::find(transport_list.begin(), transport_list.end(), t) != transport_list.end()) {
+ kick_transport_locked(t);
+ }
adb_mutex_unlock(&transport_lock);
}