r1547 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Sun Jun 24 12:43:16 CEST 2007


Author: phk
Date: 2007-06-24 12:43:15 +0200 (Sun, 24 Jun 2007)
New Revision: 1547

Modified:
   trunk/varnish-cache/bin/varnishd/cache.h
   trunk/varnish-cache/bin/varnishd/cache_acceptor.c
   trunk/varnish-cache/bin/varnishd/cache_session.c
   trunk/varnish-cache/bin/varnishd/cache_vrt.c
   trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c
   trunk/varnish-cache/bin/varnishd/mgt_cli.c
   trunk/varnish-cache/bin/varnishd/tcp.c
Log:
Further sockaddr/sockaddr_storage sanitation in order to quiet FlexeLint


Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h	2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache.h	2007-06-24 10:43:15 UTC (rev 1547)
@@ -276,10 +276,10 @@
 
 	struct worker		*wrk;
 
-	unsigned		sockaddrlen;
-	struct sockaddr_storage	sockaddr[1];
-	unsigned		mysockaddrlen;
-	struct sockaddr_storage	mysockaddr[1];
+	socklen_t		sockaddrlen;
+	socklen_t		mysockaddrlen;
+	struct sockaddr		*sockaddr;
+	struct sockaddr		*mysockaddr;
 
 	/* formatted ascii client address */
 	char			addr[TCP_ADDRBUFSIZE];

Modified: trunk/varnish-cache/bin/varnishd/cache_acceptor.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_acceptor.c	2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_acceptor.c	2007-06-24 10:43:15 UTC (rev 1547)
@@ -113,7 +113,7 @@
 VCA_Prep(struct sess *sp)
 {
 
-	TCP_name((struct sockaddr *)sp->sockaddr, sp->sockaddrlen,
+	TCP_name(sp->sockaddr, sp->sockaddrlen,
 	    sp->addr, sizeof sp->addr, sp->port, sizeof sp->port);
 	VSL(SLT_SessionOpen, sp->fd, "%s %s", sp->addr, sp->port);
 	sp->acct.first = sp->t_open.tv_sec;

Modified: trunk/varnish-cache/bin/varnishd/cache_session.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_session.c	2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_session.c	2007-06-24 10:43:15 UTC (rev 1547)
@@ -67,6 +67,7 @@
 	struct http		http;
 	unsigned		workspace;
 	TAILQ_ENTRY(sessmem)	list;
+	struct sockaddr_storage	sockaddr[2];
 };
 
 static TAILQ_HEAD(,sessmem)	ses_free_mem[2] = {
@@ -255,6 +256,7 @@
 SES_New(struct sockaddr *addr, unsigned len)
 {
 	struct sessmem *sm;
+	struct sess *sp;
 	volatile unsigned u;
 
 	/*
@@ -295,20 +297,26 @@
 		return (NULL);
 	CHECK_OBJ_NOTNULL(sm, SESSMEM_MAGIC);
 	VSL_stats->n_sess++;
-	memset(&sm->sess, 0, sizeof sm->sess);
-	sm->sess.magic = SESS_MAGIC;
-	sm->sess.mem = sm;
-	sm->sess.http = &sm->http;
+	sp = &sm->sess;
+	memset(sp, 0, sizeof *sp);
+	sp->magic = SESS_MAGIC;
+	sp->mem = sm;
+	sp->http = &sm->http;
+	sp->sockaddr = (void*)(&sm->sockaddr[0]);
+	sp->sockaddrlen = sizeof(sm->sockaddr[0]);
+	sp->mysockaddr = (void*)(&sm->sockaddr[1]);
+	sp->mysockaddrlen = sizeof(sm->sockaddr[1]);
+	sp->sockaddr->sa_family = sp->mysockaddr->sa_family = PF_UNSPEC;
 
-	assert(len < sizeof(sm->sess.sockaddr));
+	assert(len <= sp->sockaddrlen);
 	if (addr != NULL) {
-		memcpy(sm->sess.sockaddr, addr, len);
-		sm->sess.sockaddrlen = len;
+		memcpy(sp->sockaddr, addr, len);
+		sp->sockaddrlen = len;
 	}
 
 	http_Setup(&sm->http, (void *)(sm + 1), sm->workspace);
 
-	return (&sm->sess);
+	return (sp);
 }
 
 void

Modified: trunk/varnish-cache/bin/varnishd/cache_vrt.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt.c	2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt.c	2007-06-24 10:43:15 UTC (rev 1547)
@@ -257,22 +257,17 @@
 VRT_r_client_ip(struct sess *sp)
 {
 
-	return ((struct sockaddr *)sp->sockaddr);
+	return (sp->sockaddr);
 }
 
 struct sockaddr *
 VRT_r_server_ip(struct sess *sp)
 {
-	socklen_t l;
 
-	if (sp->mysockaddrlen == 0) {
-		l = sizeof sp->mysockaddr;
-		AZ(getsockname(sp->fd,
-		    (struct sockaddr*)sp->mysockaddr, &l));
-		sp->mysockaddrlen = l;
-	}
+	if (sp->mysockaddr->sa_family == AF_UNSPEC)
+		AZ(getsockname(sp->fd, sp->mysockaddr, &sp->mysockaddrlen));
 
-	return ((struct sockaddr*)sp->mysockaddr);
+	return (sp->mysockaddr);
 }
 
 /*--------------------------------------------------------------------*/

Modified: trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c	2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c	2007-06-24 10:43:15 UTC (rev 1547)
@@ -104,7 +104,7 @@
 		for (a1 = ap->priv; a1 != NULL; a1 = a1->ai_next) {
 
 			/* only match the right family */
-			if (a1->ai_family != sp->sockaddr->ss_family)
+			if (a1->ai_family != sp->sockaddr->sa_family)
 				continue;
 
 			if (a1->ai_family == AF_INET) {

Modified: trunk/varnish-cache/bin/varnishd/mgt_cli.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/mgt_cli.c	2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/mgt_cli.c	2007-06-24 10:43:15 UTC (rev 1547)
@@ -380,7 +380,7 @@
 
 	(void)what;
 	addrlen = sizeof addr;
-	i = accept(ev->fd, (struct sockaddr *)&addr, &addrlen);
+	i = accept(ev->fd, (void *)&addr, &addrlen);
 	if (i < 0)
 		return (0);
 

Modified: trunk/varnish-cache/bin/varnishd/tcp.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/tcp.c	2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/tcp.c	2007-06-24 10:43:15 UTC (rev 1547)
@@ -76,7 +76,8 @@
 void
 TCP_myname(int sock, char *abuf, unsigned alen, char *pbuf, unsigned plen)
 {
-	struct sockaddr addr[2];	/* XXX: IPv6 hack */
+	struct sockaddr_storage addr_s;
+	struct sockaddr	*addr = (void*)&addr_s;
 	socklen_t l;
 
 	l = sizeof addr;




More information about the varnish-commit mailing list