diff --git a/src/child.c b/src/child.c index 34e20e0..9f8ae10 100644 --- a/src/child.c +++ b/src/child.c @@ -33,7 +33,6 @@ #include "conf.h" static int listenfd; -static socklen_t addrlen; /* * Stores the internal data needed for each child (connection) @@ -188,7 +187,8 @@ static void child_main (struct child_s *ptr) struct sockaddr *cliaddr; socklen_t clilen; - cliaddr = (struct sockaddr *) safemalloc (addrlen); + cliaddr = (struct sockaddr *) + safemalloc (sizeof(struct sockaddr_storage)); if (!cliaddr) { log_message (LOG_CRIT, "Could not allocate memory for child address."); @@ -200,7 +200,7 @@ static void child_main (struct child_s *ptr) while (!config.quit) { ptr->status = T_WAITING; - clilen = addrlen; + clilen = sizeof(struct sockaddr_storage); connfd = accept (listenfd, cliaddr, &clilen); @@ -466,7 +466,7 @@ void child_kill_children (int sig) int child_listening_sock (uint16_t port) { - listenfd = listen_sock (port, &addrlen); + listenfd = listen_sock (port); return listenfd; } diff --git a/src/sock.c b/src/sock.c index d5d899b..b9691ef 100644 --- a/src/sock.c +++ b/src/sock.c @@ -163,12 +163,10 @@ int socket_blocking (int sock) } /* - * Start listening to a socket. Create a socket with the selected port. - * The size of the socket address will be returned to the caller through - * the pointer, while the socket is returned as a default return. - * - rjkaes + * Start listening on a socket. Create a socket with the selected port. + * The socket fd is returned upon success, -1 upon error. */ -int listen_sock (uint16_t port, socklen_t * addrlen) +int listen_sock (uint16_t port) { struct addrinfo hints, *result, *rp; char portstr[6]; @@ -176,7 +174,6 @@ int listen_sock (uint16_t port, socklen_t * addrlen) const int on = 1; assert (port > 0); - assert (addrlen != NULL); memset (&hints, 0, sizeof (struct addrinfo)); hints.ai_family = AF_UNSPEC; @@ -227,8 +224,6 @@ int listen_sock (uint16_t port, socklen_t * addrlen) return -1; } - *addrlen = rp->ai_addrlen; - freeaddrinfo (result); return listenfd; diff --git a/src/sock.h b/src/sock.h index 5eac10b..5ed7e35 100644 --- a/src/sock.h +++ b/src/sock.h @@ -29,7 +29,7 @@ #define MAXLINE (1024 * 4) extern int opensock (const char *host, int port, const char *bind_to); -extern int listen_sock (uint16_t port, socklen_t * addrlen); +extern int listen_sock (uint16_t port); extern int socket_nonblocking (int sock); extern int socket_blocking (int sock);