Remove the "adb reverse" tunnel immediately

As soon as we accepted a connection, we can remove the "adb reverse"
tunnel.
This commit is contained in:
Romain Vimont 2018-02-08 17:38:38 +01:00
parent 3b06e7d500
commit e1749a0c09
3 changed files with 9 additions and 3 deletions

View file

@ -311,7 +311,7 @@ SDL_bool scrcpy(const char *serial, Uint16 local_port, Uint16 max_size, Uint32 b
// to reduce startup time, we could be tempted to init other stuff before blocking here // to reduce startup time, we could be tempted to init other stuff before blocking here
// but we should not block after SDL_Init since it handles the signals (Ctrl+C) in its // but we should not block after SDL_Init since it handles the signals (Ctrl+C) in its
// event loop: blocking could lead to deadlock // event loop: blocking could lead to deadlock
TCPsocket device_socket = server_connect_to(&server); TCPsocket device_socket = server_connect_to(&server, serial);
if (!device_socket) { if (!device_socket) {
server_stop(&server, serial); server_stop(&server, serial);
return SDL_FALSE; return SDL_FALSE;

View file

@ -99,12 +99,18 @@ SDL_bool server_start(struct server *server, const char *serial, Uint16 local_po
return SDL_TRUE; return SDL_TRUE;
} }
TCPsocket server_connect_to(struct server *server) { TCPsocket server_connect_to(struct server *server, const char *serial) {
SDL_assert(server->server_socket); SDL_assert(server->server_socket);
server->device_socket = server_socket_accept(server->server_socket); server->device_socket = server_socket_accept(server->server_socket);
// we don't need the server socket anymore // we don't need the server socket anymore
SDLNet_TCP_Close(server->server_socket); SDLNet_TCP_Close(server->server_socket);
server->server_socket = NULL; server->server_socket = NULL;
// we don't need the adb tunnel anymore
disable_tunnel(serial); // ignore failure
server->adb_reverse_enabled = SDL_FALSE;
return server->device_socket; return server->device_socket;
} }

View file

@ -26,7 +26,7 @@ SDL_bool server_start(struct server *server, const char *serial, Uint16 local_po
Uint16 max_size, Uint32 bit_rate); Uint16 max_size, Uint32 bit_rate);
// block until the communication with the server is established // block until the communication with the server is established
TCPsocket server_connect_to(struct server *server); TCPsocket server_connect_to(struct server *server, const char *serial);
// disconnect and kill the server process // disconnect and kill the server process
void server_stop(struct server *server, const char *serial); void server_stop(struct server *server, const char *serial);