From: Adam Dickmeiss Date: Sat, 18 May 2013 21:16:06 +0000 (+0200) Subject: Use sockaddr_storage in accept call PAZ-872 X-Git-Tag: v1.6.31~15 X-Git-Url: http://sru.miketaylor.org.uk/cgi-bin?a=commitdiff_plain;h=f16d5009ed4f2f477af912be382962d3c4dbc7b0;p=pazpar2-moved-to-github.git Use sockaddr_storage in accept call PAZ-872 Due struct sockaddr is not big enough for IPV6 stuff. --- diff --git a/src/http.c b/src/http.c index 6748bbe..8dc082d 100644 --- a/src/http.c +++ b/src/http.c @@ -1176,21 +1176,21 @@ static struct http_channel *http_channel_create(http_server_t hs, static void http_accept(IOCHAN i, int event) { char host[256]; - struct sockaddr addr; + struct sockaddr_storage addr; int fd = iochan_getfd(i); - socklen_t len; + socklen_t len = sizeof addr; int s; IOCHAN c; struct http_channel *ch; struct conf_server *server = iochan_getdata(i); - len = sizeof addr; - if ((s = accept(fd, &addr, &len)) < 0) + if ((s = accept(fd, (struct sockaddr *) &addr, &len)) < 0) { yaz_log(YLOG_WARN|YLOG_ERRNO, "accept"); return; } - if (getnameinfo(&addr, len, host, sizeof(host)-1, 0, 0, NI_NUMERICHOST)) + if (getnameinfo((struct sockaddr *) &addr, len, host, sizeof(host)-1, 0, 0, + NI_NUMERICHOST)) { yaz_log(YLOG_WARN|YLOG_ERRNO, "getnameinfo"); CLOSESOCKET(s);