Merge "adb: setsid() for adb host server."
diff --git a/adb/adb.cpp b/adb/adb.cpp
index 58ccd0a..cb54d04 100644
--- a/adb/adb.cpp
+++ b/adb/adb.cpp
@@ -883,8 +883,6 @@
fprintf(stderr, "ADB server didn't ACK\n" );
return -1;
}
-
- setsid();
}
#endif /* !defined(_WIN32) */
return 0;
diff --git a/adb/client/main.cpp b/adb/client/main.cpp
index 6397c52..27b7109 100644
--- a/adb/client/main.cpp
+++ b/adb/client/main.cpp
@@ -127,10 +127,12 @@
setup_daemon_logging();
#if !defined(_WIN32)
- // Set the process group so that ctrl-c in the spawning process doesn't kill us.
- // Do this here instead of after the fork so that a ctrl-c between the "starting server" and
- // "done starting server" messages gets a chance to terminate the server.
- setpgrp();
+ // Start a new session for the daemon. Do this here instead of after the fork so
+ // that a ctrl-c between the "starting server" and "done starting server" messages
+ // gets a chance to terminate the server.
+ if (setsid() == -1) {
+ fatal("setsid() failed: %s", strerror(errno));
+ }
#endif
// Any error output written to stderr now goes to adb.log. We could