Sfoglia il codice sorgente

Merge patch from Matt Edman for bug 162 (service never stops)

svn:r4578
Nick Mathewson 19 anni fa
parent
commit
441e02d4ac
1 ha cambiato i file con 7 aggiunte e 0 eliminazioni
  1. 7 0
      src/or/main.c

+ 7 - 0
src/or/main.c

@@ -1472,6 +1472,8 @@ nt_service_is_stopped(void)
     service_status.dwCurrentState = SERVICE_STOPPED;
     SetServiceStatus(hStatus, &service_status);
     return 1;
+  } else if (service_status.dwCurrentState == SERVICE_STOPPED) {
+    return 1;
   }
   return 0;
 }
@@ -1480,11 +1482,16 @@ nt_service_is_stopped(void)
 void
 nt_service_control(DWORD request)
 {
+  static struct timeval exit_now;
+  exit_now.tv_sec  = 0;
+  exit_now.tv_usec = 0;
+
   switch (request) {
     case SERVICE_CONTROL_STOP:
         case SERVICE_CONTROL_SHUTDOWN:
           log(LOG_ERR, "Got stop/shutdown request; shutting down cleanly.");
           service_status.dwCurrentState = SERVICE_STOP_PENDING;
+          event_loopexit(&exit_now);
           return;
   }
   SetServiceStatus(hStatus, &service_status);