diff options
Diffstat (limited to '')
-rw-r--r-- | src/child.c | 8 | ||||
-rw-r--r-- | src/sock.c | 11 | ||||
-rw-r--r-- | src/sock.h | 2 |
3 files changed, 8 insertions, 13 deletions
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; } @@ -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; @@ -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); |