Corral the last setsockopt() call into one place.

This commit is contained in:
Ian Gulliver
2016-02-28 12:34:43 -08:00
parent 9e591904ac
commit 161ea56d45
3 changed files with 7 additions and 2 deletions

View File

@@ -110,8 +110,7 @@ static void incoming_listen(struct incoming *incoming) {
incoming->peer.fd = socket(addr->ai_family, addr->ai_socktype | SOCK_CLOEXEC, addr->ai_protocol); incoming->peer.fd = socket(addr->ai_family, addr->ai_socktype | SOCK_CLOEXEC, addr->ai_protocol);
assert(incoming->peer.fd >= 0); assert(incoming->peer.fd >= 0);
int optval = 1; socket_pre_bind_init(incoming->peer.fd);
setsockopt(incoming->peer.fd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
if (bind(incoming->peer.fd, addr->ai_addr, addr->ai_addrlen) != 0) { if (bind(incoming->peer.fd, addr->ai_addr, addr->ai_addrlen) != 0) {
fprintf(stderr, "I %s: Failed to bind to %s/%s: %s\n", incoming->id, hbuf, sbuf, strerror(errno)); fprintf(stderr, "I %s: Failed to bind to %s/%s: %s\n", incoming->id, hbuf, sbuf, strerror(errno));

View File

@@ -7,6 +7,11 @@
#include "socket.h" #include "socket.h"
void socket_pre_bind_init(int fd) {
int optval = 1;
assert(!setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)));
}
void socket_bound_init(int fd) { void socket_bound_init(int fd) {
int qlen = 5; int qlen = 5;
assert(!setsockopt(fd, SOL_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen))); assert(!setsockopt(fd, SOL_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen)));

View File

@@ -1,4 +1,5 @@
#pragma once #pragma once
void socket_pre_bind_init(int);
void socket_bound_init(int); void socket_bound_init(int);
void socket_connected_init(int); void socket_connected_init(int);