Date: Tuesday, December 3, 2013 @ 15:58:37 Author: dreisner Revision: 200723
upgpkg: varnish 3.0.5-1 Modified: varnish/trunk/PKGBUILD Deleted: varnish/trunk/0001-Make-up-our-mind-Any-req.-we-receive-from-the-client.patch -----------------------------------------------------------------+ 0001-Make-up-our-mind-Any-req.-we-receive-from-the-client.patch | 133 ---------- PKGBUILD | 15 - 2 files changed, 3 insertions(+), 145 deletions(-) Deleted: 0001-Make-up-our-mind-Any-req.-we-receive-from-the-client.patch =================================================================== --- 0001-Make-up-our-mind-Any-req.-we-receive-from-the-client.patch 2013-12-03 12:56:51 UTC (rev 200722) +++ 0001-Make-up-our-mind-Any-req.-we-receive-from-the-client.patch 2013-12-03 14:58:37 UTC (rev 200723) @@ -1,133 +0,0 @@ -From 4bd5b7991bf602a6c46dd0d65fc04d4b8d9667a6 Mon Sep 17 00:00:00 2001 -From: Martin Blix Grydeland <[email protected]> -Date: Wed, 30 Oct 2013 13:48:20 +0100 -Subject: [PATCH] Make up our mind: Any req.* we receive from the client with - fundamental trouble gets failed back without VCL involvement. - -Fixes #1367 ---- - bin/varnishd/cache_center.c | 28 +++++++++++++++------------- - bin/varnishd/cache_http.c | 2 +- - bin/varnishtest/tests/r01367.vtc | 30 ++++++++++++++++++++++++++++++ - 3 files changed, 46 insertions(+), 14 deletions(-) - create mode 100644 bin/varnishtest/tests/r01367.vtc - -diff --git a/bin/varnishd/cache_center.c b/bin/varnishd/cache_center.c -index 19eb2ce..fdf7cee 100644 ---- a/bin/varnishd/cache_center.c -+++ b/bin/varnishd/cache_center.c -@@ -1474,9 +1474,12 @@ DOT start -> recv [style=bold,color=green] - static int - cnt_start(struct sess *sp) - { -- uint16_t done; -+ uint16_t err_code; - char *p; -- const char *r = "HTTP/1.1 100 Continue\r\n\r\n"; -+ const char *r_100 = "HTTP/1.1 100 Continue\r\n\r\n"; -+ const char *r_400 = "HTTP/1.1 400 Bad Request\r\n\r\n"; -+ const char *r_413 = "HTTP/1.1 413 Request Entity Too Large\r\n\r\n"; -+ const char *r_417 = "HTTP/1.1 417 Expectation Failed\r\n\r\n"; - - CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); - AZ(sp->restarts); -@@ -1499,10 +1502,14 @@ cnt_start(struct sess *sp) - sp->wrk->vcl = NULL; - - http_Setup(sp->http, sp->ws); -- done = http_DissectRequest(sp); -+ err_code = http_DissectRequest(sp); - - /* If we could not even parse the request, just close */ -- if (done == 400) { -+ if (err_code == 400) -+ (void)write(sp->fd, r_400, strlen(r_400)); -+ else if (err_code == 413) -+ (void)write(sp->fd, r_413, strlen(r_413)); -+ if (err_code != 0) { - sp->step = STP_DONE; - vca_close_session(sp, "junk"); - return (0); -@@ -1514,12 +1521,6 @@ cnt_start(struct sess *sp) - /* Catch original request, before modification */ - HTTP_Copy(sp->http0, sp->http); - -- if (done != 0) { -- sp->err_code = done; -- sp->step = STP_ERROR; -- return (0); -- } -- - sp->doclose = http_DoConnection(sp->http); - - /* XXX: Handle TRACE & OPTIONS of Max-Forwards = 0 */ -@@ -1529,13 +1530,14 @@ cnt_start(struct sess *sp) - */ - if (http_GetHdr(sp->http, H_Expect, &p)) { - if (strcasecmp(p, "100-continue")) { -- sp->err_code = 417; -- sp->step = STP_ERROR; -+ (void)write(sp->fd, r_417, strlen(r_417)); -+ sp->step = STP_DONE; -+ vca_close_session(sp, "junk"); - return (0); - } - - /* XXX: Don't bother with write failures for now */ -- (void)write(sp->fd, r, strlen(r)); -+ (void)write(sp->fd, r_100, strlen(r_100)); - /* XXX: When we do ESI includes, this is not removed - * XXX: because we use http0 as our basis. Believed - * XXX: safe, but potentially confusing. -diff --git a/bin/varnishd/cache_http.c b/bin/varnishd/cache_http.c -index 8753acc..605975b 100644 ---- a/bin/varnishd/cache_http.c -+++ b/bin/varnishd/cache_http.c -@@ -601,7 +601,7 @@ http_splitline(struct worker *w, int fd, struct http *hp, - hp->hd[h2].e = p; - - if (!Tlen(hp->hd[h2])) -- return (413); -+ return (400); - - /* Skip SP */ - for (; vct_issp(*p); p++) { -diff --git a/bin/varnishtest/tests/r01367.vtc b/bin/varnishtest/tests/r01367.vtc -new file mode 100644 -index 0000000..e1de20a ---- /dev/null -+++ b/bin/varnishtest/tests/r01367.vtc -@@ -0,0 +1,30 @@ -+varnishtest "blank GET" -+ -+server s1 { -+ rxreq -+ txresp -+} -start -+ -+varnish v1 -vcl+backend { -+ sub vcl_error { -+ return (restart); -+ } -+} -start -+ -+client c1 { -+ send "GET \nHost: example.com\n\n" -+ rxresp -+ expect resp.status == 400 -+} -run -+ -+client c1 { -+ txreq -hdr "Expect: Santa-Claus" -+ rxresp -+ expect resp.status == 417 -+} -run -+ -+client c1 { -+ txreq -+ rxresp -+ expect resp.status == 200 -+} -run --- -1.8.4.2 - Modified: PKGBUILD =================================================================== --- PKGBUILD 2013-12-03 12:56:51 UTC (rev 200722) +++ PKGBUILD 2013-12-03 14:58:37 UTC (rev 200723) @@ -5,8 +5,8 @@ # Contributor: Roberto Alsina <[email protected]> pkgname=varnish -pkgver=3.0.4 -pkgrel=3 +pkgver=3.0.5 +pkgrel=1 pkgdesc="High-performance HTTP accelerator" arch=('i686' 'x86_64') url="http://www.varnish-cache.org/" @@ -15,21 +15,12 @@ backup=('etc/varnish/default.vcl') install=$pkgname.install source=("http://repo.varnish-cache.org/source/$pkgname-$pkgver.tar.gz" - '0001-Make-up-our-mind-Any-req.-we-receive-from-the-client.patch' varnish-vcl-reload varnish.service) -md5sums=('a130ce9c3504b9603a46542635e18701' - '189d3b91645dec80710ae06e03d4200b' +md5sums=('674d44775cc927aee4601edb37f60198' '03196dee7fc68e75069393d52c370762' '276f1761b3c7c6a83688038659194bbb') -prepare() { - cd "$pkgname-$pkgver" - - # https://www.varnish-cache.org/trac/ticket/1367 - patch -Np1 <"$srcdir/0001-Make-up-our-mind-Any-req.-we-receive-from-the-client.patch" -} - build() { cd "$pkgname-$pkgver"
