Skip to content

Commit

Permalink
Do not give IPv4 any special treatment in httpd code
Browse files Browse the repository at this point in the history
  • Loading branch information
juhovh committed Mar 24, 2014
1 parent 8c3f8f7 commit 1e8b64f
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions src/lib/httpd.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,12 @@ httpd_thread(void *arg)
/* Get the correct nfds value and set rfds */
FD_ZERO(&rfds);
if (httpd->open_connections < httpd->max_connections) {
FD_SET(httpd->server_fd4, &rfds);
nfds = httpd->server_fd4+1;
if (httpd->server_fd4 != -1) {
FD_SET(httpd->server_fd4, &rfds);
if (nfds <= httpd->server_fd4) {
nfds = httpd->server_fd4+1;
}
}
if (httpd->server_fd6 != -1) {
FD_SET(httpd->server_fd6, &rfds);
if (nfds <= httpd->server_fd6) {
Expand Down Expand Up @@ -229,7 +233,8 @@ httpd_thread(void *arg)
break;
}

if (FD_ISSET(httpd->server_fd4, &rfds)) {
if (httpd->open_connections < httpd->max_connections &&
httpd->server_fd4 != -1 && FD_ISSET(httpd->server_fd4, &rfds)) {
ret = httpd_accept_connection(httpd, httpd->server_fd4, 0);
if (ret == -1) {
break;
Expand Down Expand Up @@ -349,6 +354,9 @@ httpd_thread(void *arg)
int
httpd_start(httpd_t *httpd, unsigned short *port)
{
/* How many connection attempts are kept in queue */
int backlog = 5;

assert(httpd);
assert(port);

Expand All @@ -370,14 +378,14 @@ httpd_start(httpd_t *httpd, unsigned short *port)
logger_log(httpd->logger, LOGGER_WARNING, "Continuing without IPv6 support");
}

if (listen(httpd->server_fd4, 5) == -1) {
if (httpd->server_fd4 != -1 && listen(httpd->server_fd4, backlog) == -1) {
logger_log(httpd->logger, LOGGER_ERR, "Error listening to IPv4 socket");
closesocket(httpd->server_fd4);
closesocket(httpd->server_fd6);
MUTEX_UNLOCK(httpd->run_mutex);
return -2;
}
if (httpd->server_fd6 != -1 && listen(httpd->server_fd6, 5) == -1) {
if (httpd->server_fd6 != -1 && listen(httpd->server_fd6, backlog) == -1) {
logger_log(httpd->logger, LOGGER_ERR, "Error listening to IPv6 socket");
closesocket(httpd->server_fd4);
closesocket(httpd->server_fd6);
Expand Down

0 comments on commit 1e8b64f

Please sign in to comment.