Zbigniew Jędrzejewski-Szmek 930e1b
From d125991e2d5f4095605eece35d8d436437036a12 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 930e1b
From: Shawn Landden <shawn@churchofgit.com>
Zbigniew Jędrzejewski-Szmek 930e1b
Date: Sat, 16 Nov 2013 13:18:13 -0800
Zbigniew Jędrzejewski-Szmek 930e1b
Subject: [PATCH] core/socket: fix SO_REUSEPORT
Zbigniew Jędrzejewski-Szmek 930e1b
Zbigniew Jędrzejewski-Szmek 930e1b
---
Zbigniew Jędrzejewski-Szmek 930e1b
 src/core/load-fragment-gperf.gperf.m4 | 1 +
Zbigniew Jędrzejewski-Szmek 930e1b
 src/core/socket.c                     | 2 +-
Zbigniew Jędrzejewski-Szmek 930e1b
 2 files changed, 2 insertions(+), 1 deletion(-)
Zbigniew Jędrzejewski-Szmek 930e1b
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
Zbigniew Jędrzejewski-Szmek 930e1b
index 31fb7bc..d65bcc1 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/core/load-fragment-gperf.gperf.m4
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/core/load-fragment-gperf.gperf.m4
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -211,6 +211,7 @@ Socket.Broadcast,                config_parse_bool,                  0,
Zbigniew Jędrzejewski-Szmek 930e1b
 Socket.PassCredentials,          config_parse_bool,                  0,                             offsetof(Socket, pass_cred)
Zbigniew Jędrzejewski-Szmek 930e1b
 Socket.PassSecurity,             config_parse_bool,                  0,                             offsetof(Socket, pass_sec)
Zbigniew Jędrzejewski-Szmek 930e1b
 Socket.TCPCongestion,            config_parse_string,                0,                             offsetof(Socket, tcp_congestion)
Zbigniew Jędrzejewski-Szmek 930e1b
+Socket.ReusePort,                config_parse_bool,                  0,                             offsetof(Socket, reuseport)
Zbigniew Jędrzejewski-Szmek 930e1b
 Socket.MessageQueueMaxMessages,  config_parse_long,                  0,                             offsetof(Socket, mq_maxmsg)
Zbigniew Jędrzejewski-Szmek 930e1b
 Socket.MessageQueueMessageSize,  config_parse_long,                  0,                             offsetof(Socket, mq_msgsize)
Zbigniew Jędrzejewski-Szmek 930e1b
 Socket.Service,                  config_parse_socket_service,        0,                             0
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/core/socket.c b/src/core/socket.c
Zbigniew Jędrzejewski-Szmek 930e1b
index d368f7e..e673f38 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/core/socket.c
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/core/socket.c
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -770,7 +770,7 @@ static void socket_apply_socket_options(Socket *s, int fd) {
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         if (s->reuseport) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 int b = s->reuseport;
Zbigniew Jędrzejewski-Szmek 930e1b
-                if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)))
Zbigniew Jędrzejewski-Szmek 930e1b
+                if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)) < 0)
Zbigniew Jędrzejewski-Szmek 930e1b
                         log_warning_unit(UNIT(s)->id, "SO_REUSEPORT failed: %m");
Zbigniew Jędrzejewski-Szmek 930e1b
         }
Zbigniew Jędrzejewski-Szmek 930e1b