diff options
Diffstat (limited to 'src/lib/daemon_run.c')
-rw-r--r-- | src/lib/daemon_run.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/lib/daemon_run.c b/src/lib/daemon_run.c index cf9ab5de..c93a5f83 100644 --- a/src/lib/daemon_run.c +++ b/src/lib/daemon_run.c | |||
@@ -23,6 +23,9 @@ | |||
23 | * @author Christian Grothoff | 23 | * @author Christian Grothoff |
24 | */ | 24 | */ |
25 | #include "internal.h" | 25 | #include "internal.h" |
26 | #include "daemon_epoll.h" | ||
27 | #include "daemon_poll.h" | ||
28 | #include "daemon_select.h" | ||
26 | 29 | ||
27 | 30 | ||
28 | /** | 31 | /** |
@@ -46,7 +49,32 @@ | |||
46 | enum MHD_StatusCode | 49 | enum MHD_StatusCode |
47 | MHD_daemon_run (struct MHD_Daemon *daemon) | 50 | MHD_daemon_run (struct MHD_Daemon *daemon) |
48 | { | 51 | { |
49 | return -1; | 52 | if (daemon->shutdown) |
53 | return MHD_SC_DAEMON_ALREADY_SHUTDOWN; | ||
54 | if (MHD_TM_EXTERNAL_EVENT_LOOP != daemon->threading_model) | ||
55 | return MHD_SC_CONFIGURATION_MISSMATCH_FOR_RUN_EXTERNAL; | ||
56 | switch (daemon->event_loop_syscall) | ||
57 | { | ||
58 | case MHD_ELS_POLL: | ||
59 | MHD_daemon_poll_ (daemon, | ||
60 | MHD_NO); | ||
61 | MHD_cleanup_connections (daemon); | ||
62 | break; | ||
63 | #ifdef EPOLL_SUPPORT | ||
64 | case MHD_ELS_EPOLL: | ||
65 | MHD_daemon_epoll_ (daemon, | ||
66 | MHD_NO); | ||
67 | MHD_cleanup_connections (daemon); | ||
68 | break; | ||
69 | #endif | ||
70 | case MHD_ELS_SELECT: | ||
71 | MHD_daemon_select_ (daemon, | ||
72 | MHD_NO); | ||
73 | /* MHD_select does MHD_cleanup_connections already */ | ||
74 | break; | ||
75 | default: | ||
76 | return MHD_SC_CONFIGURATION_UNEXPECTED_ELS; | ||
77 | } | ||
50 | } | 78 | } |
51 | 79 | ||
52 | /* end of daemon_run.c */ | 80 | /* end of daemon_run.c */ |