diff options
author | Yang Tse <yangsita@gmail.com> | 2013-01-09 22:19:03 +0100 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2013-01-09 22:23:50 +0100 |
commit | 308cce8231b3715fad4fc5f275c47d0a479ce516 (patch) | |
tree | 89f39cecf41256d6d1af8eedea81081da139091b /tests | |
parent | a6848250d279026252aa35cd9f93fafccc76333c (diff) |
test servers: handle W32/W64 SIGBREAK with exit_signal_handler
Diffstat (limited to 'tests')
-rw-r--r-- | tests/server/rtspd.c | 15 | ||||
-rw-r--r-- | tests/server/sockfilt.c | 15 | ||||
-rw-r--r-- | tests/server/sws.c | 15 | ||||
-rw-r--r-- | tests/server/tftpd.c | 15 |
4 files changed, 60 insertions, 0 deletions
diff --git a/tests/server/rtspd.c b/tests/server/rtspd.c index 294dc700d..72422ecf5 100644 --- a/tests/server/rtspd.c +++ b/tests/server/rtspd.c @@ -228,6 +228,10 @@ static SIGHANDLER_T old_sigint_handler = SIG_ERR; static SIGHANDLER_T old_sigterm_handler = SIG_ERR; #endif +#if defined(SIGBREAK) && defined(WIN32) +static SIGHANDLER_T old_sigbreak_handler = SIG_ERR; +#endif + /* var which if set indicates that the program should finish execution */ SIG_ATOMIC_T got_exit_signal = 0; @@ -283,6 +287,13 @@ static void install_signal_handlers(void) else siginterrupt(SIGTERM, 1); #endif +#if defined(SIGBREAK) && defined(WIN32) + /* handle SIGBREAK signal with our exit_signal_handler */ + if((old_sigbreak_handler = signal(SIGBREAK, exit_signal_handler)) == SIG_ERR) + logmsg("cannot install SIGBREAK handler: %s", strerror(errno)); + else + siginterrupt(SIGBREAK, 1); +#endif } static void restore_signal_handlers(void) @@ -307,6 +318,10 @@ static void restore_signal_handlers(void) if(SIG_ERR != old_sigterm_handler) (void)signal(SIGTERM, old_sigterm_handler); #endif +#if defined(SIGBREAK) && defined(WIN32) + if(SIG_ERR != old_sigbreak_handler) + (void)signal(SIGBREAK, old_sigbreak_handler); +#endif } static int ProcessRequest(struct httprequest *req) diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c index 911285348..cc3f622d8 100644 --- a/tests/server/sockfilt.c +++ b/tests/server/sockfilt.c @@ -174,6 +174,10 @@ static SIGHANDLER_T old_sigint_handler = SIG_ERR; static SIGHANDLER_T old_sigterm_handler = SIG_ERR; #endif +#if defined(SIGBREAK) && defined(WIN32) +static SIGHANDLER_T old_sigbreak_handler = SIG_ERR; +#endif + /* var which if set indicates that the program should finish execution */ SIG_ATOMIC_T got_exit_signal = 0; @@ -229,6 +233,13 @@ static void install_signal_handlers(void) else siginterrupt(SIGTERM, 1); #endif +#if defined(SIGBREAK) && defined(WIN32) + /* handle SIGBREAK signal with our exit_signal_handler */ + if((old_sigbreak_handler = signal(SIGBREAK, exit_signal_handler)) == SIG_ERR) + logmsg("cannot install SIGBREAK handler: %s", strerror(errno)); + else + siginterrupt(SIGBREAK, 1); +#endif } static void restore_signal_handlers(void) @@ -253,6 +264,10 @@ static void restore_signal_handlers(void) if(SIG_ERR != old_sigterm_handler) (void)signal(SIGTERM, old_sigterm_handler); #endif +#if defined(SIGBREAK) && defined(WIN32) + if(SIG_ERR != old_sigbreak_handler) + (void)signal(SIGBREAK, old_sigbreak_handler); +#endif } /* diff --git a/tests/server/sws.c b/tests/server/sws.c index 6d478c76c..a7de09f92 100644 --- a/tests/server/sws.c +++ b/tests/server/sws.c @@ -233,6 +233,10 @@ static SIGHANDLER_T old_sigint_handler = SIG_ERR; static SIGHANDLER_T old_sigterm_handler = SIG_ERR; #endif +#if defined(SIGBREAK) && defined(WIN32) +static SIGHANDLER_T old_sigbreak_handler = SIG_ERR; +#endif + /* var which if set indicates that the program should finish execution */ SIG_ATOMIC_T got_exit_signal = 0; @@ -288,6 +292,13 @@ static void install_signal_handlers(void) else siginterrupt(SIGTERM, 1); #endif +#if defined(SIGBREAK) && defined(WIN32) + /* handle SIGBREAK signal with our exit_signal_handler */ + if((old_sigbreak_handler = signal(SIGBREAK, exit_signal_handler)) == SIG_ERR) + logmsg("cannot install SIGBREAK handler: %s", strerror(errno)); + else + siginterrupt(SIGBREAK, 1); +#endif } static void restore_signal_handlers(void) @@ -312,6 +323,10 @@ static void restore_signal_handlers(void) if(SIG_ERR != old_sigterm_handler) (void)signal(SIGTERM, old_sigterm_handler); #endif +#if defined(SIGBREAK) && defined(WIN32) + if(SIG_ERR != old_sigbreak_handler) + (void)signal(SIGBREAK, old_sigbreak_handler); +#endif } /* based on the testno, parse the correct server commands */ diff --git a/tests/server/tftpd.c b/tests/server/tftpd.c index 15c92778f..48950c549 100644 --- a/tests/server/tftpd.c +++ b/tests/server/tftpd.c @@ -252,6 +252,10 @@ static SIGHANDLER_T old_sigint_handler = SIG_ERR; static SIGHANDLER_T old_sigterm_handler = SIG_ERR; #endif +#if defined(SIGBREAK) && defined(WIN32) +static SIGHANDLER_T old_sigbreak_handler = SIG_ERR; +#endif + /* var which if set indicates that the program should finish execution */ SIG_ATOMIC_T got_exit_signal = 0; @@ -400,6 +404,13 @@ static void install_signal_handlers(void) else siginterrupt(SIGTERM, 1); #endif +#if defined(SIGBREAK) && defined(WIN32) + /* handle SIGBREAK signal with our exit_signal_handler */ + if((old_sigbreak_handler = signal(SIGBREAK, exit_signal_handler)) == SIG_ERR) + logmsg("cannot install SIGBREAK handler: %s", strerror(errno)); + else + siginterrupt(SIGBREAK, 1); +#endif } static void restore_signal_handlers(void) @@ -420,6 +431,10 @@ static void restore_signal_handlers(void) if(SIG_ERR != old_sigterm_handler) (void)signal(SIGTERM, old_sigterm_handler); #endif +#if defined(SIGBREAK) && defined(WIN32) + if(SIG_ERR != old_sigbreak_handler) + (void)signal(SIGBREAK, old_sigbreak_handler); +#endif } /* |