X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fsocket.c;h=44827ad346934382b24243b154b310ae13873195;hp=5af15964ff088b591fbfac1f201663849c482d5e;hb=9528592ff8d7ff361da430285deba8196e8984d5;hpb=41488fe9024a8955d19811620fd55dcc56a5b2ba diff --git a/src/core/socket.c b/src/core/socket.c index 5af15964f..44827ad34 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -481,6 +481,7 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) { "%sDirectoryMode: %04o\n" "%sKeepAlive: %s\n" "%sNoDelay: %s\n" + "%sFastOpen: %s\n" "%sFreeBind: %s\n" "%sTransparent: %s\n" "%sBroadcast: %s\n" @@ -496,6 +497,7 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) { prefix, s->directory_mode, prefix, yes_no(s->keep_alive), prefix, yes_no(s->no_delay), + prefix, yes_no(s->fast_open), prefix, yes_no(s->free_bind), prefix, yes_no(s->transparent), prefix, yes_no(s->broadcast), @@ -798,6 +800,12 @@ static void socket_apply_socket_options(Socket *s, int fd) { log_warning_unit(UNIT(s)->id, "TCP_NODELAY failed: %m"); } + if (s->fast_open) { + int b = s->fast_open; + if (setsockopt(fd, SOL_TCP, TCP_FASTOPEN, &b, sizeof(b)) < 0) + log_warning_unit(UNIT(s)->id, "TCP_FASTOPEN failed: %m"); + } + if (s->broadcast) { int one = 1; if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &one, sizeof(one)) < 0)