Add kore_sockopt().

Use it where we before were using setsockopt().
This commit is contained in:
Joris Vink 2017-02-22 13:23:30 -08:00
parent edc356ca60
commit 7f11e37161
3 changed files with 18 additions and 8 deletions

View File

@ -519,6 +519,7 @@ void kore_timer_remove(struct kore_timer *);
struct kore_timer *kore_timer_add(void (*cb)(void *, u_int64_t),
u_int64_t, void *, int);
int kore_sockopt(int, int, int);
void kore_listener_cleanup(void);
int kore_server_bind(const char *, const char *, const char *);
#if !defined(KORE_NO_TLS)

View File

@ -418,9 +418,7 @@ kore_connection_nonblock(int fd, int nodelay)
}
if (nodelay) {
flags = 1;
if (setsockopt(fd, IPPROTO_TCP,
TCP_NODELAY, (char *)&flags, sizeof(flags)) == -1) {
if (!kore_sockopt(fd, IPPROTO_TCP, TCP_NODELAY)) {
kore_log(LOG_NOTICE,
"failed to set TCP_NODELAY on %d", fd);
}

View File

@ -283,8 +283,8 @@ kore_tls_info_callback(const SSL *ssl, int flags, int ret)
int
kore_server_bind(const char *ip, const char *port, const char *ccb)
{
int r;
struct listener *l;
int on, r;
struct addrinfo hints, *results;
kore_debug("kore_server_bind(%s, %s)", ip, port);
@ -320,13 +320,10 @@ kore_server_bind(const char *ip, const char *port, const char *ccb)
return (KORE_RESULT_ERROR);
}
on = 1;
if (setsockopt(l->fd, SOL_SOCKET,
SO_REUSEADDR, (const char *)&on, sizeof(on)) == -1) {
if (!kore_sockopt(l->fd, SOL_SOCKET, SO_REUSEADDR)) {
close(l->fd);
kore_free(l);
freeaddrinfo(results);
kore_log(LOG_ERR, "setsockopt(): %s", errno_s);
return (KORE_RESULT_ERROR);
}
@ -372,6 +369,20 @@ kore_server_bind(const char *ip, const char *port, const char *ccb)
return (KORE_RESULT_OK);
}
int
kore_sockopt(int fd, int what, int opt)
{
int on;
on = 1;
if (setsockopt(fd, what, opt, (const char *)&on, sizeof(on)) == -1) {
kore_log(LOG_ERR, "setsockopt(): %s", errno_s);
return (KORE_RESULT_ERROR);
}
return (KORE_RESULT_OK);
}
void
kore_listener_cleanup(void)
{