[master] 32ad286 Pick up first session step from acceptor socket.
Poul-Henning Kamp
phk at FreeBSD.org
Mon Mar 23 14:41:46 CET 2015
commit 32ad28690c2d44eab6b0faa20ca5253372b172ee
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Mar 23 09:38:35 2015 +0000
Pick up first session step from acceptor socket.
Complain about unrecognized protocols.
diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c
index 94e00cf..0fb6349 100644
--- a/bin/varnishd/cache/cache_acceptor.c
+++ b/bin/varnishd/cache/cache_acceptor.c
@@ -296,8 +296,6 @@ vca_make_session(struct worker *wrk, void *arg)
struct wrk_accept *wa;
struct sockaddr_storage ss;
struct suckaddr *sa;
- enum sess_step first_step;
- const char *proto_name;
socklen_t sl;
char laddr[VTCP_ADDRBUFSIZE];
char lport[VTCP_PORTBUFSIZE];
@@ -307,8 +305,6 @@ vca_make_session(struct worker *wrk, void *arg)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CAST_OBJ_NOTNULL(wa, arg, WRK_ACCEPT_MAGIC);
pp = wa->sesspool;
- first_step = wa->acceptlsock->first_step;
- proto_name = wa->acceptlsock->proto_name;
/* Turn accepted socket into a session */
AN(wrk->aws->r);
@@ -334,6 +330,7 @@ vca_make_session(struct worker *wrk, void *arg)
sp->fd = wa->acceptsock;
wa->acceptsock = -1;
+ sp->sess_step = wa->acceptlsock->first_step;
assert(wa->acceptaddrlen <= vsa_suckaddr_len);
SES_Reserve_remote_addr(sp, &sa);
@@ -352,7 +349,7 @@ vca_make_session(struct worker *wrk, void *arg)
VTCP_name(sa, laddr, sizeof laddr, lport, sizeof lport);
- VSL(SLT_Begin, sp->vxid, "sess 0 %s", proto_name);
+ VSL(SLT_Begin, sp->vxid, "sess 0 %s", wa->acceptlsock->proto_name);
VSL(SLT_SessOpen, sp->vxid, "%s %s %s %s %s %.6f %d",
raddr, rport, wa->acceptlsock->name, laddr, lport,
sp->t_open, sp->fd);
@@ -368,7 +365,6 @@ vca_make_session(struct worker *wrk, void *arg)
}
vca_tcp_opt_set(sp->fd, 0);
- xxxassert(first_step == S_STP_H1NEWSESS);
/* SES_Proto_Sess() must be sceduled with reserved WS */
assert(8 == WS_Reserve(sp->ws, 8));
wrk->task.func = SES_Proto_Sess;
diff --git a/bin/varnishd/mgt/mgt_acceptor.c b/bin/varnishd/mgt/mgt_acceptor.c
index a04bca0..43e3430 100644
--- a/bin/varnishd/mgt/mgt_acceptor.c
+++ b/bin/varnishd/mgt/mgt_acceptor.c
@@ -175,15 +175,19 @@ MAC_Arg(const char *arg)
ARGV_ERR("Parse error: out of memory\n");
if (av[0] != NULL)
ARGV_ERR("%s\n", av[0]);
- if (av[2] != NULL)
- ARGV_ERR("XXX: not yet\n");
ALLOC_OBJ(mh, MAC_HELP_MAGIC);
AN(mh);
mh->name = av[1];
+
+ if (av[2] == NULL || !strcmp(av[2], "HTTP/1")) {
+ mh->first_step = S_STP_H1NEWSESS;
+ mh->proto_name = "HTTP/1";
+ } else {
+ ARGV_ERR("Unknown protocol '%s'\n", av[2]);
+ }
+
mh->err = &err;
- mh->first_step = S_STP_H1NEWSESS;
- mh->proto_name = "HTTP/1";
error = VSS_resolver(av[1], "80", mac_callback, mh, &err);
if (mh->good == 0 || err != NULL)
ARGV_ERR("Could not bind to address %s: %s\n", av[1], err);
diff --git a/bin/varnishtest/tests/c00003.vtc b/bin/varnishtest/tests/c00003.vtc
index d4ce742..2acb66b 100644
--- a/bin/varnishtest/tests/c00003.vtc
+++ b/bin/varnishtest/tests/c00003.vtc
@@ -6,5 +6,5 @@ varnishtest "Check that we fail to start if any listen address does not work"
# All bad listen addresses
err_shell "Could not bind to address 192.0.2.255:0" {${varnishd} -F -a "${bad_ip}:0" -b /// -n ${tmpdir} 2>&1 }
-# Just one bad listen addresses
-err_shell "Error: XXX: not yet" {${varnishd} -F -a "127.0.0.1:0,${bad_ip}:0" -b /// -n ${tmpdir} 2>&1 }
+# old style address list
+err_shell "Unknown protocol" {${varnishd} -F -a "127.0.0.1:0,${bad_ip}:0" -b /// -n ${tmpdir} 2>&1 }
More information about the varnish-commit
mailing list