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:59:06 +02:00
parent e989fd9b67
commit ef08ced6b4
2 changed files with 19 additions and 3 deletions
+16 -1
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)
+3 -2
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;