summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/child.c8
-rw-r--r--src/sock.c11
-rw-r--r--src/sock.h2
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;
}
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);