1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-12 13:18:14 +03:00

journal: make sure to set MHD_USE_PIPE_FOR_SHUTDOWN for libmicrohttpd servers

This makes sure libmicrohttpd won't call shutdown() on our listening
sockets, which make sure socket activation and re-activation will work
cleanly.

See:

https://github.com/systemd/systemd/pull/1286
https://lists.gnu.org/archive/html/libmicrohttpd/2015-09/msg00014.html

Fixes #1286
This commit is contained in:
Lennart Poettering 2015-09-30 23:49:26 +02:00
parent e989fd9b67
commit ef08ced6b4
2 changed files with 19 additions and 3 deletions

View File

@ -1010,7 +1010,22 @@ int main(int argc, char *argv[]) {
{ MHD_OPTION_END, 0, NULL },
{ MHD_OPTION_END, 0, NULL }};
int opts_pos = 2;
int flags = MHD_USE_THREAD_PER_CONNECTION|MHD_USE_POLL|MHD_USE_DEBUG;
/* We force MHD_USE_PIPE_FOR_SHUTDOWN here, in order
* to make sure libmicrohttpd doesn't use shutdown()
* on our listening socket, which would break socket
* re-activation. See
*
* https://lists.gnu.org/archive/html/libmicrohttpd/2015-09/msg00014.html
* https://github.com/systemd/systemd/pull/1286
*/
int flags =
MHD_USE_DEBUG |
MHD_USE_DUAL_STACK |
MHD_USE_PIPE_FOR_SHUTDOWN |
MHD_USE_POLL |
MHD_USE_THREAD_PER_CONNECTION;
if (n > 0)
opts[opts_pos++] = (struct MHD_OptionItem)

View File

@ -647,9 +647,10 @@ static int setup_microhttpd_server(RemoteServer *s,
int opts_pos = 3;
int flags =
MHD_USE_DEBUG |
MHD_USE_PEDANTIC_CHECKS |
MHD_USE_DUAL_STACK |
MHD_USE_EPOLL_LINUX_ONLY |
MHD_USE_DUAL_STACK;
MHD_USE_PEDANTIC_CHECKS |
MHD_USE_PIPE_FOR_SHUTDOWN;
const union MHD_DaemonInfo *info;
int r, epoll_fd;