Skip to content

Commit

Permalink
adb: don't dup local socket fd.
Browse files Browse the repository at this point in the history
SIGHUP handling depends on the local socket fd being fully closed in
order to trigger an event on its counterpart. Release the local socket
fd inside of Subprocess when returning it to ensure this.

Bug: http://b/29565233
Change-Id: I13b17bcddf0b396a5f4880f9e410fbbf24d9370d
  • Loading branch information
jmgao committed Jun 22, 2016
1 parent 2dff649 commit 42afe20
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions adb/shell_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ class Subprocess {

const std::string& command() const { return command_; }

int local_socket_fd() const { return local_socket_sfd_.fd(); }
int ReleaseLocalSocket() { return local_socket_sfd_.Release(); }

pid_t pid() const { return pid_; }

Expand Down Expand Up @@ -450,7 +450,7 @@ void Subprocess::ThreadHandler(void* userdata) {
Subprocess* subprocess = reinterpret_cast<Subprocess*>(userdata);

adb_thread_setname(android::base::StringPrintf(
"shell srvc %d", subprocess->local_socket_fd()));
"shell srvc %d", subprocess->pid()));

D("passing data streams for PID %d", subprocess->pid());
subprocess->PassDataStreams();
Expand Down Expand Up @@ -761,14 +761,13 @@ int StartSubprocess(const char* name, const char* terminal_type,
return ReportError(protocol, error);
}

unique_fd local_socket(dup(subprocess->local_socket_fd()));
D("subprocess creation successful: local_socket_fd=%d, pid=%d", local_socket.get(),
subprocess->pid());
int local_socket = subprocess->ReleaseLocalSocket();
D("subprocess creation successful: local_socket_fd=%d, pid=%d", local_socket, subprocess->pid());

if (!Subprocess::StartThread(std::move(subprocess), &error)) {
LOG(ERROR) << "failed to start subprocess management thread: " << error;
return ReportError(protocol, error);
}

return local_socket.release();
return local_socket;
}

0 comments on commit 42afe20

Please sign in to comment.