|
|
|
@ -70,7 +70,6 @@ static handler_t network_server_handle_fdevent(server *srv, void *context, int r
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int network_server_init(server *srv, buffer *host_token, size_t sidx) { |
|
|
|
|
int val; |
|
|
|
|
socklen_t addr_len; |
|
|
|
|
server_socket *srv_socket; |
|
|
|
|
unsigned int port = 0; |
|
|
|
@ -226,9 +225,9 @@ static int network_server_init(server *srv, buffer *host_token, size_t sidx) {
|
|
|
|
|
if (AF_INET6 == srv_socket->addr.plain.sa_family |
|
|
|
|
&& host != NULL) { |
|
|
|
|
if (s->set_v6only) { |
|
|
|
|
val = 1; |
|
|
|
|
int val = 1; |
|
|
|
|
if (-1 == setsockopt(srv_socket->fd, IPPROTO_IPV6, IPV6_V6ONLY, &val, sizeof(val))) { |
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "socketsockopt(IPV6_V6ONLY) failed:", strerror(errno)); |
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "setsockopt(IPV6_V6ONLY) failed:", strerror(errno)); |
|
|
|
|
goto error_free_socket; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
@ -241,16 +240,14 @@ static int network_server_init(server *srv, buffer *host_token, size_t sidx) {
|
|
|
|
|
/* */ |
|
|
|
|
srv->cur_fds = srv_socket->fd; |
|
|
|
|
|
|
|
|
|
val = 1; |
|
|
|
|
if (setsockopt(srv_socket->fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)) < 0) { |
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "socketsockopt(SO_REUSEADDR) failed:", strerror(errno)); |
|
|
|
|
if (fdevent_set_so_reuseaddr(srv_socket->fd, 1) < 0) { |
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "setsockopt(SO_REUSEADDR) failed:", strerror(errno)); |
|
|
|
|
goto error_free_socket; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (srv_socket->addr.plain.sa_family != AF_UNIX) { |
|
|
|
|
val = 1; |
|
|
|
|
if (setsockopt(srv_socket->fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)) < 0) { |
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "socketsockopt(TCP_NODELAY) failed:", strerror(errno)); |
|
|
|
|
if (fdevent_set_tcp_nodelay(srv_socket->fd, 1) < 0) { |
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "setsockopt(TCP_NODELAY) failed:", strerror(errno)); |
|
|
|
|
goto error_free_socket; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|