Commit 32ad2869 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Pick up first session step from acceptor socket.

Complain about unrecognized protocols.
parent 539961be
......@@ -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;
......
......@@ -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];
mh->err = &err;
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;
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);
......
......@@ -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 }
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