Commit 6c59e38d authored by Dag Erling Smørgrav's avatar Dag Erling Smørgrav

sockaddr.sa_len is not portable.


git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@1678 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent e2b0ef62
......@@ -32,6 +32,9 @@
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
......@@ -480,8 +483,19 @@ char *
VRT_IP_string(struct sess *sp, struct sockaddr *sa)
{
char h[64], p[8], *q;
socklen_t len = 0;
TCP_name(sa, sa->sa_len, h, sizeof h, p, sizeof p);
/* XXX can't rely on sockaddr.sa_len */
switch (sa->sa_family) {
case AF_INET:
len = sizeof(struct sockaddr_in);
break;
case AF_INET6:
len = sizeof(struct sockaddr_in6);
break;
}
XXXAN(len);
TCP_name(sa, len, h, sizeof h, p, sizeof p);
q = WS_Alloc(sp->http->ws, strlen(h) + strlen(p) + 2);
AN(q);
strcpy(q, h);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment