summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/exceptions.cc14
2 files changed, 19 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 40014eebb..8ad741b98 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * exceptions.cc (ctrl_c_handler): Disable any special CTRL_LOGOFF_EVENT
+ handling and add longish comment about the reasons.
+
2005-09-07 Christopher Faylor <cgf@timesys.com>
* hookapi.cc (rvadelta): Change argument to DWORD to eliminate a
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 2f9567e09..f390669c0 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -881,11 +881,25 @@ ctrl_c_handler (DWORD type)
}
if (!saw_close && type == CTRL_LOGOFF_EVENT)
{
+#if 0
+ /* CV, 2005-09-08: The CTRL_LOGOFF_EVENT is only send to services.
+ It's send when *any* user logs off. Services generally have
+ a modified console handler which allows services to survive
+ also after a user logged out, even if the service has a console
+ window attached to the visible window station of the user
+ ("Interact with desktop"). The below code contradicts this
+ standard behaviour, so for now, we disable it and just return
+ FALSE to get the default behaviour or the one the application's
+ own console handler (if any) requires.
+ In other words: We never send SIGHUP to services and their
+ child processes on a LOGOFF event. */
+
/* Check if the process is actually associated with a visible
window station, one which actually represents a visible desktop.
If not, the CTRL_LOGOFF_EVENT doesn't concern this process. */
if (has_visible_window_station ())
sig_send (myself_nowait, SIGHUP);
+#endif
return FALSE;
}
}