]> arthur.barton.de Git - netatalk.git/commitdiff
Terminate old sessions in reconnect
authorFrank Lahm <franklahm@googlemail.com>
Tue, 24 May 2011 14:40:08 +0000 (16:40 +0200)
committerFrank Lahm <franklahm@googlemail.com>
Tue, 24 May 2011 14:40:08 +0000 (16:40 +0200)
libatalk/util/server_child.c

index ecefbd2cb7502c65ff349e68b3b845f65e88d91b..607c7889b0f791ebfc3d74f8397d60be6f2d45b0 100644 (file)
@@ -279,6 +279,14 @@ int server_child_transfer_session(server_child *children,
     fork = (server_child_fork *) children->fork + forkid;
     if ((child = resolve_child(fork->table, pid)) == NULL) {
         LOG(log_note, logtype_default, "Reconnect: no child[%u]", pid);
+        if (kill(pid, 0) == 0) {
+            LOG(log_note, logtype_default, "Reconnect: terminating old session[%u]", pid);
+            kill(pid, SIGTERM);
+            if (kill(pid, 0) == 0) {
+                LOG(log_error, logtype_default, "Reconnect: killing old session[%u]", pid);
+                kill(pid, SIGKILL);
+            }
+        }
         return 0;
     }