Kaynağa Gözat

Close the listen sockets in child processes

By keeping the listen sockets open, the children were preventing the
daemon from being restarted cleanly. Once the child has forked these
listen sockets are no longer needed by that process, so can be closed.
tags/1.2
Chris Butler 10 yıl önce
ebeveyn
işleme
0fc199d5bc
1 değiştirilmiş dosya ile 4 ekleme ve 0 silme
  1. 4
    0
      postsrsd.c

+ 4
- 0
postsrsd.c Dosyayı Görüntüle

@@ -431,6 +431,10 @@ int main (int argc, char **argv)
431 431
         conn = accept(fds[i].fd, NULL, NULL);
432 432
         if (conn < 0) continue;
433 433
         if (fork() == 0) {
434
+          // close listen sockets so that we don't stop the main daemon process from restarting
435
+          close(forward_sock);
436
+          close(reverse_sock);
437
+
434 438
           fp = fdopen(conn, "r+");
435 439
           if (fp == NULL) exit(EXIT_FAILURE);
436 440
           fds[2].fd = conn;

Loading…
İptal
Kaydet