r6846: make smbd terminate immediately on EOF from stdin
authorAndrew Tridgell <tridge@samba.org>
Tue, 17 May 2005 06:20:54 +0000 (06:20 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:16:50 +0000 (13:16 -0500)
this will be used to make sure 'make test' kills smbd when finished
(This used to be commit ddbb5495637ec0d693079bc94010ab91201a07b7)

source4/smbd/server.c

index d6f2afdaea4f54524401542d33055569ae67e364..d30bcd664810f8d533fbaaf6fe44e998874ed868 100644 (file)
@@ -124,6 +124,19 @@ static void setup_signals(void)
 }
 
 
+/*
+  handle io on stdin
+*/
+static void server_stdin_handler(struct event_context *event_ctx, struct fd_event *fde, 
+                                uint16_t flags, void *private)
+{
+       uint8_t c;
+       if (read(0, &c, 1) == 0) {
+               DEBUG(0,("EOF on stdin - terminating\n"));
+               exit(0);
+       }
+}
+
 /*
  main server.
 */
@@ -200,6 +213,9 @@ static int binary_smbd_main(int argc, const char *argv[])
           should hang off that */
        event_ctx = event_context_init(NULL);
 
+       /* catch EOF on stdin */
+       event_add_fd(event_ctx, event_ctx, 0, EVENT_FD_READ, server_stdin_handler, NULL);
+
        DEBUG(0,("Using %s process model\n", model));
        status = server_service_startup(event_ctx, model, lp_server_services());
        if (!NT_STATUS_IS_OK(status)) {