Loading adb/transport.cpp +18 −8 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include "adb.h" #include "adb.h" #include "adb_auth.h" #include "adb_auth.h" #include "adb_trace.h" #include "adb_utils.h" #include "adb_utils.h" #include "diagnose_usb.h" #include "diagnose_usb.h" Loading Loading @@ -88,6 +89,7 @@ static std::string dump_packet(const char* name, const char* func, apacket* p) { } } static int read_packet(int fd, const char* name, apacket** ppacket) { static int read_packet(int fd, const char* name, apacket** ppacket) { ATRACE_NAME("read_packet"); char buff[8]; char buff[8]; if (!name) { if (!name) { snprintf(buff, sizeof buff, "fd=%d", fd); snprintf(buff, sizeof buff, "fd=%d", fd); Loading @@ -111,6 +113,7 @@ static int read_packet(int fd, const char* name, apacket** ppacket) { } } static int write_packet(int fd, const char* name, apacket** ppacket) { static int write_packet(int fd, const char* name, apacket** ppacket) { ATRACE_NAME("write_packet"); char buff[8]; char buff[8]; if (!name) { if (!name) { snprintf(buff, sizeof buff, "fd=%d", fd); snprintf(buff, sizeof buff, "fd=%d", fd); Loading Loading @@ -194,20 +197,24 @@ static void read_transport_thread(void* _t) { D("%s: data pump started", t->serial); D("%s: data pump started", t->serial); for (;;) { for (;;) { ATRACE_NAME("read_transport loop"); p = get_apacket(); p = get_apacket(); if (t->read_from_remote(p, t) == 0) { { ATRACE_NAME("read_transport read_remote"); if (t->read_from_remote(p, t) != 0) { D("%s: remote read failed for transport", t->serial); put_apacket(p); break; } } D("%s: received remote packet, sending to transport", t->serial); D("%s: received remote packet, sending to transport", t->serial); if (write_packet(t->fd, t->serial, &p)) { if (write_packet(t->fd, t->serial, &p)) { put_apacket(p); put_apacket(p); D("%s: failed to write apacket to transport", t->serial); D("%s: failed to write apacket to transport", t->serial); goto oops; goto oops; } } } else { D("%s: remote read failed for transport", t->serial); put_apacket(p); break; } } } D("%s: SYNC offline for transport", t->serial); D("%s: SYNC offline for transport", t->serial); Loading Loading @@ -239,10 +246,12 @@ static void write_transport_thread(void* _t) { D("%s: starting write_transport thread, reading from fd %d", t->serial, t->fd); D("%s: starting write_transport thread, reading from fd %d", t->serial, t->fd); for (;;) { for (;;) { ATRACE_NAME("write_transport loop"); if (read_packet(t->fd, t->serial, &p)) { if (read_packet(t->fd, t->serial, &p)) { D("%s: failed to read apacket from transport on fd %d", t->serial, t->fd); D("%s: failed to read apacket from transport on fd %d", t->serial, t->fd); break; break; } } if (p->msg.command == A_SYNC) { if (p->msg.command == A_SYNC) { if (p->msg.arg0 == 0) { if (p->msg.arg0 == 0) { D("%s: transport SYNC offline", t->serial); D("%s: transport SYNC offline", t->serial); Loading @@ -259,6 +268,7 @@ static void write_transport_thread(void* _t) { } else { } else { if (active) { if (active) { D("%s: transport got packet, sending to remote", t->serial); D("%s: transport got packet, sending to remote", t->serial); ATRACE_NAME("write_transport write_remote"); t->write_to_remote(p, t); t->write_to_remote(p, t); } else { } else { D("%s: transport ignoring packet while offline", t->serial); D("%s: transport ignoring packet while offline", t->serial); Loading Loading
adb/transport.cpp +18 −8 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include "adb.h" #include "adb.h" #include "adb_auth.h" #include "adb_auth.h" #include "adb_trace.h" #include "adb_utils.h" #include "adb_utils.h" #include "diagnose_usb.h" #include "diagnose_usb.h" Loading Loading @@ -88,6 +89,7 @@ static std::string dump_packet(const char* name, const char* func, apacket* p) { } } static int read_packet(int fd, const char* name, apacket** ppacket) { static int read_packet(int fd, const char* name, apacket** ppacket) { ATRACE_NAME("read_packet"); char buff[8]; char buff[8]; if (!name) { if (!name) { snprintf(buff, sizeof buff, "fd=%d", fd); snprintf(buff, sizeof buff, "fd=%d", fd); Loading @@ -111,6 +113,7 @@ static int read_packet(int fd, const char* name, apacket** ppacket) { } } static int write_packet(int fd, const char* name, apacket** ppacket) { static int write_packet(int fd, const char* name, apacket** ppacket) { ATRACE_NAME("write_packet"); char buff[8]; char buff[8]; if (!name) { if (!name) { snprintf(buff, sizeof buff, "fd=%d", fd); snprintf(buff, sizeof buff, "fd=%d", fd); Loading Loading @@ -194,20 +197,24 @@ static void read_transport_thread(void* _t) { D("%s: data pump started", t->serial); D("%s: data pump started", t->serial); for (;;) { for (;;) { ATRACE_NAME("read_transport loop"); p = get_apacket(); p = get_apacket(); if (t->read_from_remote(p, t) == 0) { { ATRACE_NAME("read_transport read_remote"); if (t->read_from_remote(p, t) != 0) { D("%s: remote read failed for transport", t->serial); put_apacket(p); break; } } D("%s: received remote packet, sending to transport", t->serial); D("%s: received remote packet, sending to transport", t->serial); if (write_packet(t->fd, t->serial, &p)) { if (write_packet(t->fd, t->serial, &p)) { put_apacket(p); put_apacket(p); D("%s: failed to write apacket to transport", t->serial); D("%s: failed to write apacket to transport", t->serial); goto oops; goto oops; } } } else { D("%s: remote read failed for transport", t->serial); put_apacket(p); break; } } } D("%s: SYNC offline for transport", t->serial); D("%s: SYNC offline for transport", t->serial); Loading Loading @@ -239,10 +246,12 @@ static void write_transport_thread(void* _t) { D("%s: starting write_transport thread, reading from fd %d", t->serial, t->fd); D("%s: starting write_transport thread, reading from fd %d", t->serial, t->fd); for (;;) { for (;;) { ATRACE_NAME("write_transport loop"); if (read_packet(t->fd, t->serial, &p)) { if (read_packet(t->fd, t->serial, &p)) { D("%s: failed to read apacket from transport on fd %d", t->serial, t->fd); D("%s: failed to read apacket from transport on fd %d", t->serial, t->fd); break; break; } } if (p->msg.command == A_SYNC) { if (p->msg.command == A_SYNC) { if (p->msg.arg0 == 0) { if (p->msg.arg0 == 0) { D("%s: transport SYNC offline", t->serial); D("%s: transport SYNC offline", t->serial); Loading @@ -259,6 +268,7 @@ static void write_transport_thread(void* _t) { } else { } else { if (active) { if (active) { D("%s: transport got packet, sending to remote", t->serial); D("%s: transport got packet, sending to remote", t->serial); ATRACE_NAME("write_transport write_remote"); t->write_to_remote(p, t); t->write_to_remote(p, t); } else { } else { D("%s: transport ignoring packet while offline", t->serial); D("%s: transport ignoring packet while offline", t->serial); Loading