diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2019-06-04 22:54:00 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2019-06-04 22:54:00 +0200 |
commit | 479d234cedbacde49bdc55e4109286e280933937 (patch) | |
tree | 2e52e6b999e68e12ec061350a73a36d2f806da5a | |
parent | 86d9cb1e4157845405227f83a0318c912cd40532 (diff) | |
download | weechat-479d234cedbacde49bdc55e4109286e280933937.zip |
relay: set socket option SO_REUSEADDR only for TCP sockets when creating the socket (issue #733)
-rw-r--r-- | src/plugins/relay/relay-server.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/plugins/relay/relay-server.c b/src/plugins/relay/relay-server.c index d130ad5d2..beccb8599 100644 --- a/src/plugins/relay/relay-server.c +++ b/src/plugins/relay/relay-server.c @@ -444,7 +444,7 @@ relay_server_sock_cb (const void *pointer, void *data, int fd) flags = 0; fcntl (client_fd, F_SETFL, flags | O_NONBLOCK); - /* set socket option SO_REUSEADDR */ + /* set socket option SO_REUSEADDR (only for TCP socket) */ if (!server->unix_socket) { set = 1; @@ -621,19 +621,22 @@ relay_server_create_socket (struct t_relay_server *server) } #endif - /* set option SO_REUSEADDR to 1 */ - set = 1; - if (setsockopt (server->sock, SOL_SOCKET, SO_REUSEADDR, - (void *) &set, sizeof (set)) < 0) + /* set option SO_REUSEADDR 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_REUSEADDR", set, errno, strerror (errno)); - close (server->sock); - server->sock = -1; - return 0; + set = 1; + if (setsockopt (server->sock, SOL_SOCKET, SO_REUSEADDR, + (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_REUSEADDR", set, errno, strerror (errno)); + close (server->sock); + server->sock = -1; + return 0; + } } /* set option SO_KEEPALIVE to 1 */ |