Pārlūkot izejas kodu

Add SIGTERM support to -runWithOptions:error:

Pierre-Olivier Latour 11 gadi atpakaļ
vecāks
revīzija
420ed719e8

+ 3 - 3
GCDWebServer/Core/GCDWebServer.h

@@ -351,9 +351,9 @@ extern NSString* const GCDWebServerAuthenticationMethod_DigestAccess;
 - (BOOL)runWithPort:(NSUInteger)port bonjourName:(NSString*)name;
 
 /**
- *  Runs the server synchronously using -startWithOptions: until a SIGINT signal
- *  is received i.e. Ctrl-C. This method is intended to be used by command line
- *  tools.
+ *  Runs the server synchronously using -startWithOptions: until a SIGTERM or
+ *  SIGINT signal is received i.e. Ctrl-C in Terminal. This method is intended to
+ *  be used by command line tools.
  *
  *  Returns NO if the server failed to start and sets "error" argument if not NULL.
  *

+ 5 - 3
GCDWebServer/Core/GCDWebServer.m

@@ -668,8 +668,9 @@ static inline NSString* _EncodeBase64(NSString* string) {
   DCHECK([NSThread isMainThread]);
   BOOL success = NO;
   _run = YES;
-  void (*handler)(int) = signal(SIGINT, _SignalHandler);
-  if (handler != SIG_ERR) {
+  void (*termHandler)(int) = signal(SIGTERM, _SignalHandler);
+  void (*intHandler)(int) = signal(SIGINT, _SignalHandler);
+  if ((termHandler != SIG_ERR) && (intHandler != SIG_ERR)) {
     if ([self startWithOptions:options error:error]) {
       while (_run) {
         CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0, true);
@@ -677,7 +678,8 @@ static inline NSString* _EncodeBase64(NSString* string) {
       [self stop];
       success = YES;
     }
-    signal(SIGINT, handler);
+    signal(SIGINT, intHandler);
+    signal(SIGTERM, termHandler);
   }
   return success;
 }