From 22895f3f5e7079776713591d1de38c87ad7e2c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Tue, 4 Jun 2019 22:59:42 +0200 Subject: [PATCH] relay: set socket option SO_KEEPALIVE only for TCP sockets when creating the socket (issue #733) --- src/plugins/relay/relay-server.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/plugins/relay/relay-server.c b/src/plugins/relay/relay-server.c index beccb8599..b247837bf 100644 --- a/src/plugins/relay/relay-server.c +++ b/src/plugins/relay/relay-server.c @@ -639,19 +639,22 @@ relay_server_create_socket (struct t_relay_server *server) } } - /* set option SO_KEEPALIVE to 1 */ - set = 1; - if (setsockopt (server->sock, SOL_SOCKET, SO_KEEPALIVE, - (void *) &set, sizeof (set)) < 0) + /* set option SO_KEEPALIVE to 1 (only for TCP socket) */ + if (!server->unix_socket) { - weechat_printf (NULL, - _("%s%s: cannot set socket option \"%s\" to %d: " - "error %d %s"), - weechat_prefix ("error"), RELAY_PLUGIN_NAME, - "SO_KEEPALIVE", set, errno, strerror (errno)); - close (server->sock); - server->sock = -1; - return 0; + set = 1; + if (setsockopt (server->sock, SOL_SOCKET, SO_KEEPALIVE, + (void *) &set, sizeof (set)) < 0) + { + weechat_printf (NULL, + _("%s%s: cannot set socket option \"%s\" to %d: " + "error %d %s"), + weechat_prefix ("error"), RELAY_PLUGIN_NAME, + "SO_KEEPALIVE", set, errno, strerror (errno)); + close (server->sock); + server->sock = -1; + return 0; + } } /* bind */