From hermunn at varnish-software.com Thu Dec 1 10:15:05 2016 From: hermunn at varnish-software.com (Pål Hermunn Johansen) Date: Thu, 01 Dec 2016 11:15:05 +0100 Subject: [4.1] 4529ff7 Prepare for 4.1.4 release Message-ID: commit 4529ff74ca96b2eb9a58f64e6cae80f34ff33142 Author: P?l Hermunn Johansen Date: Thu Dec 1 11:12:13 2016 +0100 Prepare for 4.1.4 release diff --git a/configure.ac b/configure.ac index fe9739d..d0f2727 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ AC_PREREQ(2.59) AC_COPYRIGHT([Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2016 Varnish Software]) AC_REVISION([$Id$]) -AC_INIT([Varnish], [4.1.4-beta3], [varnish-dev at varnish-cache.org]) +AC_INIT([Varnish], [4.1.4], [varnish-dev at varnish-cache.org]) AC_CONFIG_SRCDIR(include/miniobj.h) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/doc/changes.rst b/doc/changes.rst index 8db9887..30940aa 100644 --- a/doc/changes.rst +++ b/doc/changes.rst @@ -1,5 +1,5 @@ ================================ -Varnish Cache 4.1.4 (unreleased) +Varnish Cache 4.1.4 (2016-12-01) ================================ Changes since 4.1.4-beta3: From scanner at varnish-cache.org Thu Dec 1 15:45:54 2016 From: scanner at varnish-cache.org (scanner at varnish-cache.org) Date: Thu, 01 Dec 2016 22:45:54 +0700 Subject: Message from KMBT_C220 Message-ID: <99544C01.016.12998E87FBF2.scanner@varnish-cache.org> A non-text attachment was scrubbed... Name: SKMBT_C26261393666382.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 31353 bytes Desc: not available URL: From dridi.boukelmoune at gmail.com Thu Dec 1 16:00:06 2016 From: dridi.boukelmoune at gmail.com (Dridi Boukelmoune) Date: Thu, 01 Dec 2016 17:00:06 +0100 Subject: [master] 98204cb Make Lck_AssertHeld trigger in the caller's code Message-ID: commit 98204cba8484aec3991ee048a553db3241a19761 Author: Dridi Boukelmoune Date: Thu Feb 25 15:09:52 2016 +0100 Make Lck_AssertHeld trigger in the caller's code The `held == 0` branch in the Lck__AssertHeld function is *never* taken and `cache.h` instructs to only use the macro. Being generated from calling code, the panic message becomes more informative. Panic messages were up until now not very helpful: Assert error in Lck__Assert(), cache/cache_lck.c line 175: Condition(ilck->held) not true. diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h index d71504e..87ccdd6 100644 --- a/bin/varnishd/cache/cache.h +++ b/bin/varnishd/cache/cache.h @@ -840,7 +840,8 @@ void Lck__Lock(struct lock *lck, const char *p, int l); void Lck__Unlock(struct lock *lck, const char *p, int l); int Lck__Trylock(struct lock *lck, const char *p, int l); void Lck__New(struct lock *lck, struct VSC_C_lck *, const char *); -void Lck__Assert(const struct lock *lck, int held); +int Lck__Held(const struct lock *lck); +int Lck__Owned(const struct lock *lck); /* public interface: */ void Lck_Delete(struct lock *lck); @@ -850,7 +851,11 @@ int Lck_CondWait(pthread_cond_t *cond, struct lock *lck, double); #define Lck_Lock(a) Lck__Lock(a, __func__, __LINE__) #define Lck_Unlock(a) Lck__Unlock(a, __func__, __LINE__) #define Lck_Trylock(a) Lck__Trylock(a, __func__, __LINE__) -#define Lck_AssertHeld(a) Lck__Assert(a, 1) +#define Lck_AssertHeld(a) \ + do { \ + assert(Lck__Held(a)); \ + assert(Lck__Owned(a)); \ + } while (0) struct VSC_C_lck *Lck_CreateClass(const char *name); diff --git a/bin/varnishd/cache/cache_lck.c b/bin/varnishd/cache/cache_lck.c index 90190dc..03dd243 100644 --- a/bin/varnishd/cache/cache_lck.c +++ b/bin/varnishd/cache/cache_lck.c @@ -165,19 +165,23 @@ Lck__Trylock(struct lock *lck, const char *p, int l) return (r); } -void -Lck__Assert(const struct lock *lck, int held) +int +Lck__Held(const struct lock *lck) { struct ilck *ilck; CAST_OBJ_NOTNULL(ilck, lck->priv, ILCK_MAGIC); - if (held) { - assert(ilck->held); - assert(pthread_equal(ilck->owner, pthread_self())); - } else { - AZ(ilck->held); - AZ(pthread_equal(ilck->owner, pthread_self())); - } + return (ilck->held); +} + +int +Lck__Owned(const struct lock *lck) +{ + struct ilck *ilck; + + CAST_OBJ_NOTNULL(ilck, lck->priv, ILCK_MAGIC); + AN(ilck->held); + return (pthread_equal(ilck->owner, pthread_self())); } int __match_proto__() From scanner at varnish-cache.org Thu Dec 1 15:34:30 2016 From: scanner at varnish-cache.org (scanner at varnish-cache.org) Date: Thu, 01 Dec 2016 08:34:30 -0700 Subject: Message from KMBT_C220 Message-ID: <812FD76D.016.BDB507AE7783.scanner@varnish-cache.org> A non-text attachment was scrubbed... Name: SKMBT_C57122301585331.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 31423 bytes Desc: not available URL: From lyman.gilchrist at varnish-cache.org Fri Dec 2 13:18:38 2016 From: lyman.gilchrist at varnish-cache.org (lyman) Date: Fri, 02 Dec 2016 20:18:38 +0700 Subject: Emailing: EPS00002 Message-ID: <49387597b45d2d292425ac468401812@varnish-cache.org> Please find attachment. --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus -------------- next part -------------- A non-text attachment was scrubbed... Name: EPS00002.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 27759 bytes Desc: not available URL: From tony.chiasson at varnish-cache.org Fri Dec 2 14:51:47 2016 From: tony.chiasson at varnish-cache.org (tony) Date: Fri, 02 Dec 2016 20:21:47 +0530 Subject: Emailing: EPS000091 Message-ID: Please find attachment. --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus -------------- next part -------------- A non-text attachment was scrubbed... Name: EPS000091.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 28120 bytes Desc: not available URL: From nils.goroll at uplex.de Fri Dec 2 15:53:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Fri, 02 Dec 2016 16:53:05 +0100 Subject: [master] ea1da86 minor clarifications on object attributes Message-ID: commit ea1da86f9ec49bfe9b027c4498dff05859d0f511 Author: Nils Goroll Date: Fri Dec 2 14:27:21 2016 +0100 minor clarifications on object attributes diff --git a/lib/libvcc/generate.py b/lib/libvcc/generate.py index d002541..cc269f8 100755 --- a/lib/libvcc/generate.py +++ b/lib/libvcc/generate.py @@ -647,21 +647,21 @@ sp_variables = [ 'STRING', ('hit',), (), """ - The HTTP protocol version used when the object was retrieved. + The HTTP protocol version stored with the object. """ ), ('obj.status', 'INT', ('hit',), (), """ - The HTTP status code returned by the server. + The HTTP status code stored with the object. """ ), ('obj.reason', 'STRING', ('hit',), (), """ - The HTTP status message returned by the server. + The HTTP reason phrase stored with the object. """ ), ('obj.hits', From nils.goroll at uplex.de Fri Dec 2 15:53:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Fri, 02 Dec 2016 16:53:05 +0100 Subject: [master] c52117a 1e3 status codes #1 Message-ID: commit c52117a2d89a47a7a91970e2a75193eeec26d2a0 Author: Nils Goroll Date: Fri Dec 2 14:32:49 2016 +0100 1e3 status codes #1 diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c index 5798374..dad7bd4 100644 --- a/bin/varnishd/cache/cache_req_fsm.c +++ b/bin/varnishd/cache/cache_req_fsm.c @@ -160,7 +160,7 @@ cnt_synth(struct worker *wrk, struct req *req) now = W_TIM_real(wrk); VSLb_ts_req(req, "Process", now); - if (req->err_code < 100 || req->err_code > 999) + if (req->err_code < 100) req->err_code = 501; HTTP_Setup(req->resp, req->ws, req->vsl, SLT_RespMethod); diff --git a/bin/varnishd/cache/cache_vrt.c b/bin/varnishd/cache/cache_vrt.c index b829cd9..1abf5b7 100644 --- a/bin/varnishd/cache/cache_vrt.c +++ b/bin/varnishd/cache/cache_vrt.c @@ -54,11 +54,11 @@ VRT_synth(VRT_CTX, unsigned code, const char *reason) CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); - if (code < 100 || code > 999) + if (code < 100) code = 503; ctx->req->err_code = (uint16_t)code; - ctx->req->err_reason = - reason ? reason : http_Status2Reason(ctx->req->err_code, NULL); + ctx->req->err_reason = reason ? reason + : http_Status2Reason(ctx->req->err_code % 1000, NULL); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishtest/tests/c00068.vtc b/bin/varnishtest/tests/c00068.vtc index 08bda8d..313ca9b 100644 --- a/bin/varnishtest/tests/c00068.vtc +++ b/bin/varnishtest/tests/c00068.vtc @@ -20,14 +20,17 @@ varnish v1 -vcl+backend { if (req.url == "/332") { return (synth(332, "FOO")); } else if (req.url == "/333") { - return (synth(resp.status, resp.reason)); + return (synth(resp.status + 1000, + resp.reason)); } else { return (synth(334, "BAR")); } } sub vcl_synth { - if (resp.status == 333) { + # internal response status >1000 will be taken modulo + # 1000 when sent + if (resp.status == 1333) { set resp.http.connection = "close"; } else if (resp.status == 332) { if (req.restarts == 0) { diff --git a/lib/libvcc/generate.py b/lib/libvcc/generate.py index cc269f8..9ee7469 100755 --- a/lib/libvcc/generate.py +++ b/lib/libvcc/generate.py @@ -492,6 +492,9 @@ sp_variables = [ ('backend_response', 'backend_error'), ('backend_response', 'backend_error'), """ The HTTP status code returned by the server. + + Status codes >1000 can be set for vcl-internal + purposes and will be taken modulo 1000 on delivery. """ ), ('beresp.reason', From nils.goroll at uplex.de Fri Dec 2 15:53:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Fri, 02 Dec 2016 16:53:05 +0100 Subject: [master] cd700b6 do not build the pdfs by default Message-ID: commit cd700b68370258b51f9acb8a4ebc3637e37f9334 Author: Nils Goroll Date: Fri Dec 2 16:50:42 2016 +0100 do not build the pdfs by default diff --git a/doc/graphviz/Makefile.am b/doc/graphviz/Makefile.am index 6de1705..233783c 100644 --- a/doc/graphviz/Makefile.am +++ b/doc/graphviz/Makefile.am @@ -23,7 +23,6 @@ dist-hook: SIZE = 8.4,11.7 EXTRA_DIST = $(srcdir)/*.dot \ - $(PDFS) \ $(SVGS) PDFS = \ From fgsch at lodoss.net Fri Dec 2 16:21:06 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Fri, 02 Dec 2016 17:21:06 +0100 Subject: [master] f69701f Clarify that graphviz is normally optional Message-ID: commit f69701f5399a429fa70896392f0621cb59e86f46 Author: Federico G. Schwindt Date: Fri Dec 2 16:18:58 2016 +0000 Clarify that graphviz is normally optional This is a hard dep iff the svg files need to be updated. diff --git a/configure.ac b/configure.ac index 82d6802..bdceff6 100644 --- a/configure.ac +++ b/configure.ac @@ -60,7 +60,7 @@ AC_ARG_WITH([dot], [AC_CHECK_PROGS(DOT, [dot], [no]) if test "x$DOT" = "xno"; then AC_MSG_WARN( - [dot not found - cannot generate graphviz output for documentation.]) + [dot not found - build will fail if svg files are out of date.]) fi]) AM_CONDITIONAL(HAVE_DOT,[test "x$DOT" != "xno"]) diff --git a/doc/sphinx/installation/install.rst b/doc/sphinx/installation/install.rst index 1c5668c..cd1a65f 100644 --- a/doc/sphinx/installation/install.rst +++ b/doc/sphinx/installation/install.rst @@ -88,6 +88,9 @@ installed. On a Debian or Ubuntu system these are: * `pkg-config` * `python-docutils` * `python-sphinx` + +Optionally, to rebuild the svg files: + * `graphviz` Build dependencies on Red Hat / CentOS @@ -108,6 +111,9 @@ packages installed: * `pkgconfig` * `python-docutils` * `python-sphinx` + +Optionally, to rebuild the svg files: + * `graphviz` Build dependencies on a SmartOS Zone @@ -116,8 +122,11 @@ Build dependencies on a SmartOS Zone As of SmartOS pkgsrc 2015Q4, install the following packages:: pkgin in autoconf automake libedit libtool ncurses \ - pcre graphviz py27-sphinx python27 gmake gcc49 \ - pkg-config + pcre py27-sphinx python27 gmake gcc49 pkg-config + +Optionally, to rebuild the svg files: + + pkgin in graphviz Optionally, to pull from a repository:: From nils.goroll at uplex.de Fri Dec 2 16:51:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Fri, 02 Dec 2016 17:51:05 +0100 Subject: [master] 8b7413d 1e3 status codes #2 - vtc Message-ID: commit 8b7413d65856ad50e26e97d060386c443b2b53b8 Author: Nils Goroll Date: Fri Dec 2 17:48:30 2016 +0100 1e3 status codes #2 - vtc diff --git a/bin/varnishtest/tests/v00050.vtc b/bin/varnishtest/tests/v00050.vtc new file mode 100644 index 0000000..9f05674 --- /dev/null +++ b/bin/varnishtest/tests/v00050.vtc @@ -0,0 +1,158 @@ +varnishtest "VCL/VRT: status >1000 handling" + + +server s1 { + rxreq + txresp -status 200 + rxreq + txresp -status 301 + rxreq + txresp -status 998 +} + +server s1 -start + +# - internal status code visible ? +# - reason phrase set for status %1000 ? +# - status < 1000 stored/delivered +varnish v1 -vcl+backend { + import std; + + probe sick_probe { + .initial = 0; + } + backend sick { + .host = "${bad_ip}"; + .port = "9080"; + .probe = sick_probe; + } + + sub vcl_backend_fetch { + if (bereq.retries == 0) { + set bereq.backend = s1; + } + } + + sub vcl_backend_response { + set beresp.status = beresp.status + 1000; + std.log(beresp.status); + if (beresp.status == 1200) { + if (beresp.reason != "OK") { + std.log("!OK"); + return (abandon); + } + return (deliver); + } else if (beresp.status == 1301) { + if (beresp.reason != "Moved Permanently") { + std.log("!Moved Permanently"); + return (abandon); + } + return (deliver); + } else { + if (beresp.status != 1998) { + std.log("!1998"); + return (abandon); + } + set beresp.status = 1999; + set bereq.backend = sick; + # to get to vcl_backend_error + return (retry); + } + # UNREACHED + std.log("impossible"); + return (abandon); + } + + sub vcl_backend_error { + # getting here via FetchError "no backend connection" + if (beresp.status != 503) { + return (abandon); + } + set beresp.status = 1200; + set beresp.reason = "OK from v_b_e"; + if (beresp.status != 1200) { + return (abandon); + } + set beresp.ttl = 1m; + } + + sub vcl_hash { + if (req.url == "/deliver") { + hash_data("/a"); + } else { + hash_data(req.url); + } + return(lookup); + } + + sub vcl_deliver { + if (req.url == "/deliver") { + set resp.status = 40404; + if (resp.status != 40404) { + return (synth(400)); + } + } + } + + sub vcl_recv { + if (req.url == "/synth") { + return (synth(22301, "Hamburg")); + } + } + + sub vcl_synth { + std.log("synth " + resp.status + " " + resp.reason); + if (resp.status != 22301) { + set resp.status = 501; + return (deliver); + } + if (resp.reason != "Hamburg") { + set resp.status = 502; + return (deliver); + } + set resp.status = 22302; + set resp.reason = "Wrong Postcode"; + return (deliver); + } +} -start + +client c1 { + txreq -url "/a" + rxresp + expect resp.status == 200 + txreq -url "/a" + rxresp + expect resp.status == 200 + + txreq -url "/b" + rxresp + expect resp.status == 301 + txreq -url "/b" + rxresp + expect resp.status == 301 + + txreq -url "/c" + rxresp + expect resp.status == 200 + expect resp.reason == "OK from v_b_e" + txreq -url "/c" + rxresp + expect resp.status == 200 + expect resp.reason == "OK from v_b_e" + + txreq -url "/deliver" + rxresp + expect resp.status == 404 + expect resp.reason == "Not Found" + + txreq -url "/synth" + rxresp + expect resp.status == 302 + expect resp.reason == "Wrong Postcode" +} + +client c1 -run + +server s1 -wait + +varnish v1 -stop From canon at varnish-cache.org Fri Dec 2 17:42:46 2016 From: canon at varnish-cache.org (canon at varnish-cache.org) Date: Fri, 02 Dec 2016 23:12:46 +0530 Subject: Attached document Message-ID: <20161202231246.0001.CanonTxNo.1961@Canon75358E.varnish-cache.org> A non-text attachment was scrubbed... Name: 1961_001.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 28099 bytes Desc: not available URL: From canon at varnish-cache.org Fri Dec 2 18:18:49 2016 From: canon at varnish-cache.org (canon at varnish-cache.org) Date: Fri, 02 Dec 2016 23:48:49 +0530 Subject: Attached document Message-ID: <20161202234849.0001.CanonTxNo.8784@Canon116A88.varnish-cache.org> A non-text attachment was scrubbed... Name: 8784_0088.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 28119 bytes Desc: not available URL: From phk at FreeBSD.org Fri Dec 2 18:52:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Fri, 02 Dec 2016 19:52:05 +0100 Subject: [master] 3d3c876 There are still systems out there where the shell builtin echo doesn't understand -n ? Message-ID: commit 3d3c876a9e95324fa6a9e6d8a9ff0d51b2197067 Author: Poul-Henning Kamp Date: Fri Dec 2 18:50:30 2016 +0000 There are still systems out there where the shell builtin echo doesn't understand -n ? Really ? diff --git a/tools/vtest.sh b/tools/vtest.sh index dd7a36b..5eff55c 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -75,7 +75,7 @@ makedistcheck () ( failedtests () ( for t in `grep '^FAIL: tests/' ${1} | sort -u | sed 's/.* //'` do - echo -n "VTCGITREV ${t} " + /bin/echo -n "VTCGITREV ${t} " ( cd varnish-cache/bin/varnishtest/ git log -n 1 ${t} | head -1 From fgsch at lodoss.net Sun Dec 4 10:51:04 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Sun, 04 Dec 2016 11:51:04 +0100 Subject: [master] 6dca812 More consistent error messages Message-ID: commit 6dca81266c00dd3b2f737b1cad10e4570b0ccbce Author: Federico G. Schwindt Date: Sun Dec 4 10:49:08 2016 +0000 More consistent error messages In particular VSL_Error() and VSM_Error() return a string without the newline now. diff --git a/bin/varnishlog/varnishlog.c b/bin/varnishlog/varnishlog.c index dde6ead..c5d9d92 100644 --- a/bin/varnishlog/varnishlog.c +++ b/bin/varnishlog/varnishlog.c @@ -83,7 +83,7 @@ openout(int append) else LOG.fo = VSL_WriteOpen(VUT.vsl, LOG.w_arg, append, 0); if (LOG.fo == NULL) - VUT_Error(2, "Can't open output file (%s)", + VUT_Error(2, "Cannot open output file (%s)", LOG.A_opt ? strerror(errno) : VSL_Error(VUT.vsl)); VUT.dispatch_priv = LOG.fo; } diff --git a/lib/libvarnishapi/vsl_cursor.c b/lib/libvarnishapi/vsl_cursor.c index 33d08e3..2348ad9 100644 --- a/lib/libvarnishapi/vsl_cursor.c +++ b/lib/libvarnishapi/vsl_cursor.c @@ -250,18 +250,18 @@ VSL_CursorVSM(struct VSL_data *vsl, struct VSM_data *vsm, unsigned options) if (!VSM_Get(vsm, &vf, VSL_CLASS, "", "")) { (void)vsl_diag(vsl, - "No VSL chunk found (child not started ?)\n"); + "No VSL chunk found (child not started ?)"); return (NULL); } head = vf.b; if (memcmp(head->marker, VSL_HEAD_MARKER, sizeof head->marker)) { - (void)vsl_diag(vsl, "Not a VSL chunk\n"); + (void)vsl_diag(vsl, "Not a VSL chunk"); return (NULL); } ALLOC_OBJ(c, VSLC_VSM_MAGIC); if (c == NULL) { - (void)vsl_diag(vsl, "Out of memory\n"); + (void)vsl_diag(vsl, "Out of memory"); return (NULL); } c->cursor.priv_tbl = &vslc_vsm_tbl; @@ -276,7 +276,7 @@ VSL_CursorVSM(struct VSL_data *vsl, struct VSM_data *vsm, unsigned options) i = vslc_vsm_reset(&c->cursor); if (i) { - (void)vsl_diag(vsl, "Cursor initialization failure (%d)\n", i); + (void)vsl_diag(vsl, "Cursor initialization failure (%d)", i); FREE_OBJ(c); return (NULL); } @@ -405,7 +405,7 @@ VSL_CursorFile(struct VSL_data *vsl, const char *name, unsigned options) else { fd = open(name, O_RDONLY); if (fd < 0) { - vsl_diag(vsl, "Could not open %s: %s\n", name, + vsl_diag(vsl, "Cannot open %s: %s", name, strerror(errno)); return (NULL); } @@ -416,7 +416,7 @@ VSL_CursorFile(struct VSL_data *vsl, const char *name, unsigned options) if (i <= 0) { if (close_fd) (void)close(fd); - vsl_diag(vsl, "VSL file read error: %s\n", + vsl_diag(vsl, "VSL file read error: %s", i < 0 ? strerror(errno) : "EOF"); return (NULL); } @@ -424,7 +424,7 @@ VSL_CursorFile(struct VSL_data *vsl, const char *name, unsigned options) if (memcmp(buf, VSL_FILE_ID, sizeof buf)) { if (close_fd) (void)close(fd); - vsl_diag(vsl, "Not a VSL file: %s\n", name); + vsl_diag(vsl, "Not a VSL file: %s", name); return (NULL); } @@ -432,7 +432,7 @@ VSL_CursorFile(struct VSL_data *vsl, const char *name, unsigned options) if (c == NULL) { if (close_fd) (void)close(fd); - vsl_diag(vsl, "Out of memory\n"); + vsl_diag(vsl, "Out of memory"); return (NULL); } c->cursor.priv_tbl = &vslc_file_tbl; diff --git a/lib/libvarnishapi/vsm.c b/lib/libvarnishapi/vsm.c index 4f614d5..f3fd9f4 100644 --- a/lib/libvarnishapi/vsm.c +++ b/lib/libvarnishapi/vsm.c @@ -137,10 +137,10 @@ VSM_n_Arg(struct VSM_data *vd, const char *arg) CHECK_OBJ_NOTNULL(vd, VSM_MAGIC); if (vd->head) - return (vsm_diag(vd, "VSM_n_Arg: Already open\n")); + return (vsm_diag(vd, "VSM_n_Arg: Already open")); if (VIN_N_Arg(arg, &name, NULL, &fname)) - return (vsm_diag(vd, "Invalid instance name: %s\n", - strerror(errno))); + return (vsm_diag(vd, "Invalid instance name: %s", + strerror(errno))); AN(name); AN(fname); @@ -165,7 +165,7 @@ VSM_N_Arg(struct VSM_data *vd, const char *arg) AN(arg); if (vd->head) - return (vsm_diag(vd, "VSM_N_Arg: Already open\n")); + return (vsm_diag(vd, "VSM_N_Arg: Already open")); REPLACE(vd->name, arg); REPLACE(vd->fname, arg); vd->N_opt = 1; @@ -234,14 +234,14 @@ VSM_Open(struct VSM_data *vd) vd->vsm_fd = open(vd->fname, O_RDONLY); if (vd->vsm_fd < 0) - return (vsm_diag(vd, "Cannot open %s: %s\n", + return (vsm_diag(vd, "Cannot open %s: %s", vd->fname, strerror(errno))); AZ(fstat(vd->vsm_fd, &vd->fstat)); if (!S_ISREG(vd->fstat.st_mode)) { AZ(close(vd->vsm_fd)); vd->vsm_fd = -1; - return (vsm_diag(vd, "%s is not a regular file\n", + return (vsm_diag(vd, "%s is not a regular file", vd->fname)); } @@ -249,22 +249,22 @@ VSM_Open(struct VSM_data *vd) if (i != sizeof slh) { AZ(close(vd->vsm_fd)); vd->vsm_fd = -1; - return(vsm_diag(vd, "Cannot read %s: %s\n", + return (vsm_diag(vd, "Cannot read %s: %s", vd->fname, strerror(errno))); } if (memcmp(slh.marker, VSM_HEAD_MARKER, sizeof slh.marker)) { AZ(close(vd->vsm_fd)); vd->vsm_fd = -1; - return (vsm_diag(vd, "Not a VSM file %s\n", vd->fname)); + return (vsm_diag(vd, "Not a VSM file %s", vd->fname)); } if (!vd->N_opt && slh.alloc_seq == 0) { AZ(close(vd->vsm_fd)); vd->vsm_fd = -1; return (vsm_diag(vd, - "Abandoned VSM file (Varnish not running?) %s\n", - vd->fname)); + "Abandoned VSM file (Varnish not running?) %s", + vd->fname)); } v = mmap(NULL, slh.shm_size, @@ -272,7 +272,7 @@ VSM_Open(struct VSM_data *vd) if (v == MAP_FAILED) { AZ(close(vd->vsm_fd)); vd->vsm_fd = -1; - return (vsm_diag(vd, "Cannot mmap %s: %s\n", + return (vsm_diag(vd, "Cannot mmap %s: %s", vd->fname, strerror(errno))); } vd->head = v; diff --git a/lib/libvarnishapi/vut.c b/lib/libvarnishapi/vut.c index 39c27fb..3d724c4 100644 --- a/lib/libvarnishapi/vut.c +++ b/lib/libvarnishapi/vut.c @@ -246,15 +246,15 @@ VUT_Setup(void) /* Create and validate the query expression */ VUT.vslq = VSLQ_New(VUT.vsl, NULL, VUT.g_arg, VUT.q_arg); if (VUT.vslq == NULL) - VUT_Error(1, "Query expression error:\n%s", VSL_Error(VUT.vsl)); + VUT_Error(1, "Query expression error:\n%s", + VSL_Error(VUT.vsl)); /* Setup input */ if (VUT.r_arg) { REPLACE(VUT.name, VUT.r_arg); c = VSL_CursorFile(VUT.vsl, VUT.r_arg, 0); if (c == NULL) - VUT_Error(1, "Can't open log file (%s)", - VSL_Error(VUT.vsl)); + VUT_Error(1, "%s", VSL_Error(VUT.vsl)); } else { VUT.vsm = VSM_New(); AN(VUT.vsm); @@ -276,7 +276,7 @@ VUT_Setup(void) break; if (isnan(t_start) && VUT.t_arg > 0.) { - VUT_Error(0, "Can't open log -" + VUT_Error(0, "Cannot open log -" " retrying for %.0f seconds", VUT.t_arg); t_start = VTIM_real(); } @@ -293,11 +293,9 @@ VUT_Setup(void) if (VUT.t_arg >= 0. && (i || !c)) { if (i) - VUT_Error(1, "Can't open VSM file (%s)", - VSM_Error(VUT.vsm)); + VUT_Error(1, "%s", VSM_Error(VUT.vsm)); else - VUT_Error(1, "Can't open log (%s)", - VSL_Error(VUT.vsl)); + VUT_Error(1, "%s", VSL_Error(VUT.vsl)); } else if (!isnan(t_start)) VUT_Error(0, "Log opened"); } From nils.goroll at uplex.de Mon Dec 5 08:59:06 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Mon, 05 Dec 2016 09:59:06 +0100 Subject: [master] 69838a5 add std.getenv() Message-ID: commit 69838a5cc3250b79ad03d264ba49f37f814c6f8f Author: Nils Goroll Date: Fri Dec 2 10:48:12 2016 +0100 add std.getenv() Merges #2152 diff --git a/bin/varnishtest/tests/m00026.vtc b/bin/varnishtest/tests/m00026.vtc new file mode 100644 index 0000000..17ca1ed --- /dev/null +++ b/bin/varnishtest/tests/m00026.vtc @@ -0,0 +1,21 @@ +varnishtest "Test std.getenv" + +varnish v1 -vcl { + import std; + + backend dummy { .host = "${bad_ip}"; .port = "9080"; } + + sub vcl_recv { + return(synth(200)); + } + + sub vcl_synth { + set resp.http.X-PATH = std.getenv("PATH"); + } +} -start + +client c1 { + txreq + rxresp + expect resp.http.X-PATH ~ "^/" +} -run diff --git a/lib/libvmod_std/vmod.vcc b/lib/libvmod_std/vmod.vcc index dfedbd7..7caa2c0 100644 --- a/lib/libvmod_std/vmod.vcc +++ b/lib/libvmod_std/vmod.vcc @@ -274,6 +274,14 @@ Example | ... | } +$Function STRING getenv(STRING name) + +Description + Return environment variable *name* or the empty string. + + See getenv(3) +Example + | set req.http.My-Env = getenv("MY_ENV"); SEE ALSO ======== diff --git a/lib/libvmod_std/vmod_std.c b/lib/libvmod_std/vmod_std.c index 6354d69..609c56c 100644 --- a/lib/libvmod_std/vmod_std.c +++ b/lib/libvmod_std/vmod_std.c @@ -248,3 +248,12 @@ vmod_strstr(VRT_CTX, VCL_STRING s1, VCL_STRING s2) return (NULL); return (strstr(s1, s2)); } + +VCL_STRING __match_proto__(td_std_getenv) +vmod_getenv(VRT_CTX, VCL_STRING name) +{ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); + if (name == NULL || *name == '\0') + return (NULL); + return (getenv(name)); +} From phk at FreeBSD.org Mon Dec 5 10:50:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Mon, 05 Dec 2016 11:50:05 +0100 Subject: [master] 6c70168 Next round of autocrap de-cargo-culting: Remove tests we don't care about. Message-ID: commit 6c70168150da2259aeebb3aabe3a693a1810ffe9 Author: Poul-Henning Kamp Date: Mon Dec 5 10:48:55 2016 +0000 Next round of autocrap de-cargo-culting: Remove tests we don't care about. diff --git a/configure.ac b/configure.ac index bdceff6..9400c09 100644 --- a/configure.ac +++ b/configure.ac @@ -180,8 +180,6 @@ AC_CHECK_HEADERS([edit/readline/readline.h], # Checks for header files. AC_HEADER_STDC -AC_HEADER_SYS_WAIT -AC_HEADER_TIME AC_CHECK_HEADERS([sys/endian.h]) AC_CHECK_HEADERS([sys/filio.h]) AC_CHECK_HEADERS([sys/mount.h], [], [], [#include ]) @@ -193,23 +191,8 @@ AC_CHECK_HEADERS([execinfo.h]) AC_CHECK_HEADERS([pthread_np.h], [], [], [#include ]) AC_CHECK_HEADERS([priv.h]) -# Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_CHECK_MEMBERS([struct sockaddr.sa_len],,,[ -#include -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -]) - # Checks for library functions. -AC_TYPE_SIGNAL -AC_TYPE_SIZE_T -AC_FUNC_VPRINTF -AC_CHECK_FUNCS([strerror]) -AC_FUNC_STRERROR_R AC_CHECK_FUNCS([dladdr]) -AC_CHECK_FUNCS([socket]) AC_CHECK_FUNCS([nanosleep]) AC_CHECK_FUNCS([setppriv]) AC_CHECK_FUNCS([fallocate]) @@ -220,7 +203,6 @@ LIBS="${PTHREAD_LIBS}" AC_CHECK_FUNCS([pthread_set_name_np]) AC_CHECK_FUNCS([pthread_setname_np]) AC_CHECK_FUNCS([pthread_mutex_isowned_np]) -AC_CHECK_FUNCS([pthread_timedjoin_np]) LIBS="${save_LIBS}" # Support for visibility attribute From martin at varnish-software.com Mon Dec 5 12:02:05 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Mon, 05 Dec 2016 13:02:05 +0100 Subject: [master] f4400e0 Allow delivery processors to finish early Message-ID: commit f4400e0c682c69ba63fc7c00abe7246ea570fbd8 Author: Martin Blix Grydeland Date: Tue Nov 22 16:35:57 2016 +0100 Allow delivery processors to finish early A delivery processor may want to finish the delivery early. Change the return value from VDP_bytes and the delivery processors into 3 categories. 0 means continue, negative is error and positive is finished. The latching of errors (to help ESI delivery continue while still recording the error) will latch the lowest non-zero value observed. VDP_gunzip is fixed to not unconditionally return errors. Also add some text to explain the behaviour of VDP_bytes and its delivery processors. diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h index 87ccdd6..0a7ed98 100644 --- a/bin/varnishd/cache/cache.h +++ b/bin/varnishd/cache/cache.h @@ -602,7 +602,7 @@ struct req { /* Deliver pipeline */ struct vdp_entry_s vdp; struct vdp_entry *vdp_nxt; - unsigned vdp_errval; + unsigned vdp_retval; /* Delivery mode */ unsigned res_mode; diff --git a/bin/varnishd/cache/cache_deliver_proc.c b/bin/varnishd/cache/cache_deliver_proc.c index f61cfb3..578f54c 100644 --- a/bin/varnishd/cache/cache_deliver_proc.c +++ b/bin/varnishd/cache/cache_deliver_proc.c @@ -32,6 +32,22 @@ #include "cache.h" #include "cache_filter.h" +/* VDP_bytes + * + * Pushes len bytes at ptr down the delivery processor list. + * + * This function picks and calls the next delivery processor from the + * list. The return value is the return value of the delivery + * processor. Upon seeing a non-zero return value, that lowest value + * observed is latched in req->vdp_retval and all subsequent calls to + * VDP_bytes will return that value directly without calling the next + * processor. + * + * Valid return values (of VDP_bytes and any VDP function): + * r < 0: Error, breaks out early on an error condition + * r == 0: Continue + * r > 0: Stop, breaks out early without error condition + */ int VDP_bytes(struct req *req, enum vdp_action act, const void *ptr, ssize_t len) { @@ -40,8 +56,8 @@ VDP_bytes(struct req *req, enum vdp_action act, const void *ptr, ssize_t len) CHECK_OBJ_NOTNULL(req, REQ_MAGIC); assert(act == VDP_NULL || act == VDP_FLUSH); - if (req->vdp_errval) - return (req->vdp_errval); + if (req->vdp_retval) + return (req->vdp_retval); vdp = req->vdp_nxt; CHECK_OBJ_NOTNULL(vdp, VDP_ENTRY_MAGIC); req->vdp_nxt = VTAILQ_NEXT(vdp, list); @@ -49,10 +65,10 @@ VDP_bytes(struct req *req, enum vdp_action act, const void *ptr, ssize_t len) assert(act > VDP_NULL || len > 0); /* Call the present layer, while pointing to the next layer down */ retval = vdp->func(req, act, &vdp->priv, ptr, len); - if (retval) - req->vdp_errval = retval; /* Latch error value */ + if (retval && (req->vdp_retval == 0 || retval < req->vdp_retval)) + req->vdp_retval = retval; /* Latch error value */ req->vdp_nxt = vdp; - return (retval); + return (req->vdp_retval); } void @@ -126,8 +142,12 @@ vdp_objiterator(void *priv, int flush, const void *ptr, ssize_t len) int VDP_DeliverObj(struct req *req) { + int r; CHECK_OBJ_NOTNULL(req, REQ_MAGIC); - return (ObjIterate(req->wrk, req->objcore, req, vdp_objiterator, - req->objcore->flags & OC_F_PRIVATE ? 1 : 0)); + r = ObjIterate(req->wrk, req->objcore, req, vdp_objiterator, + req->objcore->flags & OC_F_PRIVATE ? 1 : 0); + if (r < 0) + return (r); + return (0); } diff --git a/bin/varnishd/cache/cache_gzip.c b/bin/varnishd/cache/cache_gzip.c index 97082db..1860799 100644 --- a/bin/varnishd/cache/cache_gzip.c +++ b/bin/varnishd/cache/cache_gzip.c @@ -347,7 +347,7 @@ VDP_gunzip(struct req *req, enum vdp_action act, void **priv, return (-1); if (vg->m_len == vg->m_sz || vr != VGZ_OK) { if (VDP_bytes(req, VDP_FLUSH, vg->m_buf, vg->m_len)) - return (-1); + return (req->vdp_retval); vg->m_len = 0; VGZ_Obuf(vg, vg->m_buf, vg->m_sz); } diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c index dad7bd4..16fee9f 100644 --- a/bin/varnishd/cache/cache_req_fsm.c +++ b/bin/varnishd/cache/cache_req_fsm.c @@ -668,6 +668,7 @@ cnt_recv(struct worker *wrk, struct req *req) req->director_hint = VCL_DefaultDirector(req->vcl); AN(req->director_hint); + req->vdp_retval = 0; req->d_ttl = -1; req->disable_esi = 0; req->hash_always_miss = 0; diff --git a/bin/varnishd/storage/storage_simple.c b/bin/varnishd/storage/storage_simple.c index 957c8f4..091aa29 100644 --- a/bin/varnishd/storage/storage_simple.c +++ b/bin/varnishd/storage/storage_simple.c @@ -263,8 +263,8 @@ sml_iterator(struct worker *wrk, struct objcore *oc, if (boc == NULL) { VTAILQ_FOREACH_SAFE(st, &obj->list, list, checkpoint) { AN(st->len); - if (ret == 0 && func(priv, 1, st->ptr, st->len)) - ret = -1; + if (ret == 0) + ret = func(priv, 1, st->ptr, st->len); if (final) { VTAILQ_REMOVE(&obj->list, st, list); sml_stv_free(stv, st); @@ -329,10 +329,9 @@ sml_iterator(struct worker *wrk, struct objcore *oc, st = NULL; Lck_Unlock(&boc->mtx); assert(l > 0 || boc->state == BOS_FINISHED); - if (func(priv, st != NULL ? final : 1, p, l)) { - ret = -1; + ret = func(priv, st != NULL ? final : 1, p, l); + if (ret) break; - } } HSH_DerefBoc(wrk, oc); return (ret); From martin at varnish-software.com Mon Dec 5 12:02:05 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Mon, 05 Dec 2016 13:02:05 +0100 Subject: [master] 333e6da Finish range delivery processing when the range is delivered. Message-ID: commit 333e6da19e8e57ca318d03dd10dcf68ae43ab2b4 Author: Martin Blix Grydeland Date: Tue Nov 22 16:38:33 2016 +0100 Finish range delivery processing when the range is delivered. When doing range delivery, make the delivery processing finish early when all of the bytes of the requested range has been delivered. This to avoid waiting around for a slow fetch to finish before handling the next request on the connection. Fixes: #2035 diff --git a/bin/varnishd/cache/cache_range.c b/bin/varnishd/cache/cache_range.c index 8b3e0f1..0af1a08 100644 --- a/bin/varnishd/cache/cache_range.c +++ b/bin/varnishd/cache/cache_range.c @@ -80,7 +80,8 @@ vrg_range_bytes(struct req *req, enum vdp_action act, void **priv, else if (act > VDP_NULL) retval = VDP_bytes(req, act, p, 0); vrg_priv->range_off += len; - return (retval); + return (retval || + vrg_priv->range_off >= vrg_priv->range_high ? 1 : 0); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishtest/tests/r02035.vtc b/bin/varnishtest/tests/r02035.vtc new file mode 100644 index 0000000..cca0ce4 --- /dev/null +++ b/bin/varnishtest/tests/r02035.vtc @@ -0,0 +1,36 @@ +varnishtest "Streaming range early finish" + +barrier b1 cond 2 + +server s1 { + non-fatal + rxreq + txresp -nolen -hdr "Content-Length: 11" + # Delay to get around Nagle. Without the delay the body bytes + # would be in the same packet as the headers, and would end + # up as pipelined data. Pipelined data wouldn't create a streaming + # data event, breaking the test case. + delay 1 + send_n 10 "A" + # Sema r1 halts the backend thread until client c1 is finished. + barrier b1 sync + send "B" +} -start + +varnish v1 -vcl+backend { +} -start + +client c1 { + txreq -hdr "Range: bytes=0-4" + rxresp + expect resp.status == 206 + expect resp.bodylen == 5 + + # The client thread should be ready to accept another request: + txreq -hdr "Range: bytes=5-9" + rxresp + expect resp.status == 206 + expect resp.bodylen == 5 + + barrier b1 sync +} -run From martin at varnish-software.com Mon Dec 5 12:02:05 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Mon, 05 Dec 2016 13:02:05 +0100 Subject: [master] 23ca54d Add an assert preventing buffer overflows Message-ID: commit 23ca54d8727c28b5e93941855b54e6f6fd3dcb8b Author: Martin Blix Grydeland Date: Mon Nov 28 11:56:49 2016 +0100 Add an assert preventing buffer overflows Make sure that the workspace can accomodate the pipelined data before memmoving it into place. Add a comment on an open issue in the H2 code path that could trigger this assert. diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c index 9bcb824..e915712 100644 --- a/bin/varnishd/cache/cache_session.c +++ b/bin/varnishd/cache/cache_session.c @@ -196,6 +196,7 @@ HTC_RxInit(struct http_conn *htc, struct ws *ws) if (htc->pipeline_b != NULL) { l = htc->pipeline_e - htc->pipeline_b; assert(l > 0); + assert(l <= ws->r - htc->rxbuf_b); memmove(htc->rxbuf_b, htc->pipeline_b, l); htc->rxbuf_e += l; htc->pipeline_b = NULL; diff --git a/bin/varnishd/http2/cache_http2_proto.c b/bin/varnishd/http2/cache_http2_proto.c index 54b8a2e..ff3278f 100644 --- a/bin/varnishd/http2/cache_http2_proto.c +++ b/bin/varnishd/http2/cache_http2_proto.c @@ -661,6 +661,9 @@ h2_new_ou_session(struct worker *wrk, struct h2_sess *h2, h2->htc->pipeline_e = req->htc->pipeline_e; req->htc->pipeline_b = NULL; req->htc->pipeline_e = NULL; + /* XXX: This call may assert on buffer overflow if the pipelined + data exceeds the available space in the aws workspace. What to + do about the overflowing data is an open issue. */ HTC_RxInit(h2->htc, wrk->aws); /* Start req thread */ From martin at varnish-software.com Mon Dec 5 12:02:05 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Mon, 05 Dec 2016 13:02:05 +0100 Subject: [master] 4bcc1c2 Fix buffer overflow in HTC_RxInit on workspace exhaustion Message-ID: commit 4bcc1c213b5140c4277595bcee3c15682d9d2b96 Author: Martin Blix Grydeland Date: Mon Nov 28 16:41:21 2016 +0100 Fix buffer overflow in HTC_RxInit on workspace exhaustion HTC_RxInit could write a single '\0' NUL character outside of the workspace when its called and there is zero bytes left in the workspace. This would trigger the workspace canary causing subsequent assertion. Fix by releaving HTC_RxInit of adding the '\0' character. HTC_RxStuff now returns HTC_S_Overflow early if the available buffer space is zero. The '\0' character is inserted just before calling the completion check function. Also fix an off-by-one error on the http_{req|resp}_size calculations, where the maximum number of bytes accepted was one less than the paramter indicated. c00039.vtc and c00040.vtc has been edited to reflect that and to be more expressive about the sizes they generate. Fixes: #1834 diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c index e915712..63eb665 100644 --- a/bin/varnishd/cache/cache_session.c +++ b/bin/varnishd/cache/cache_session.c @@ -202,7 +202,6 @@ HTC_RxInit(struct http_conn *htc, struct ws *ws) htc->pipeline_b = NULL; htc->pipeline_e = NULL; } - *htc->rxbuf_e = '\0'; } void @@ -241,18 +240,28 @@ HTC_RxStuff(struct http_conn *htc, htc_complete_f *func, int i; CHECK_OBJ_NOTNULL(htc, HTTP_CONN_MAGIC); - - if (htc->ws->r - htc->rxbuf_b < maxbytes) - maxbytes = (htc->ws->r - htc->rxbuf_b); + AN(htc->ws->r); + AN(htc->rxbuf_b); + assert(htc->rxbuf_b <= htc->rxbuf_e); AZ(isnan(tn)); if (t1 != NULL) assert(isnan(*t1)); + if (htc->rxbuf_e == htc->ws->r) { + /* Can't work with a zero size buffer */ + WS_ReleaseP(htc->ws, htc->rxbuf_b); + return (HTC_S_OVERFLOW); + } + if ((htc->ws->r - htc->rxbuf_b) - 1L < maxbytes) + maxbytes = (htc->ws->r - htc->rxbuf_b) - 1L; /* Space for NUL */ + while (1) { now = VTIM_real(); AZ(htc->pipeline_b); AZ(htc->pipeline_e); + assert(htc->rxbuf_e < htc->ws->r); + *htc->rxbuf_e = '\0'; hs = func(htc); if (hs == HTC_S_OVERFLOW || hs == HTC_S_JUNK) { WS_ReleaseP(htc->ws, htc->rxbuf_b); @@ -271,18 +280,17 @@ HTC_RxStuff(struct http_conn *htc, htc_complete_f *func, /* Working on it */ if (t1 != NULL && isnan(*t1)) *t1 = now; - } else if (hs == HTC_S_EMPTY) { + } else if (hs == HTC_S_EMPTY) htc->rxbuf_e = htc->rxbuf_b; - *htc->rxbuf_e = '\0'; - } else + else WRONG("htc_status_e"); tmo = tn - now; if (!isnan(ti) && ti < tn) tmo = ti - now; - i = (htc->rxbuf_e - htc->rxbuf_b) + 1L; /* space for NUL */ - i = maxbytes - i; - if (i <= 0) { + i = maxbytes - (htc->rxbuf_e - htc->rxbuf_b); + assert(i >= 0); + if (i == 0) { WS_ReleaseP(htc->ws, htc->rxbuf_b); return (HTC_S_OVERFLOW); } @@ -292,10 +300,9 @@ HTC_RxStuff(struct http_conn *htc, htc_complete_f *func, if (i == 0 || i == -1) { WS_ReleaseP(htc->ws, htc->rxbuf_b); return (HTC_S_EOF); - } else if (i > 0) { + } else if (i > 0) htc->rxbuf_e += i; - *htc->rxbuf_e = '\0'; - } else if (i == -2) { + else if (i == -2) { if (hs == HTC_S_EMPTY && ti <= now) { WS_ReleaseP(htc->ws, htc->rxbuf_b); return (HTC_S_IDLE); diff --git a/bin/varnishtest/tests/c00039.vtc b/bin/varnishtest/tests/c00039.vtc index 6afb2eb..370234f 100644 --- a/bin/varnishtest/tests/c00039.vtc +++ b/bin/varnishtest/tests/c00039.vtc @@ -8,6 +8,9 @@ server s1 { rxreq expect req.url == "/2" txresp -bodylen 5 + + rxreq + txresp -bodylen 5 } -start varnish v1 \ @@ -36,22 +39,27 @@ client c1 { } -run client c1 { - txreq -url "/1" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0...." + # Each line is 32 bytes. Total: 32 * 8 == 256 + send "GET /....0....5....0. HTTP/1.1\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5...\r\n\r\n" rxresp expect resp.status == 200 - txreq -url "/1" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5....0....5....0" \ - -hdr "1...5: ..0....5\n ..0....5" + # Each line is 32 except last, which is 33. Total: 32 * 7 + 33 == 257 + send "GET /....0....5....0. HTTP/1.1\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....\r\n\r\n" expect_close } -run diff --git a/bin/varnishtest/tests/c00040.vtc b/bin/varnishtest/tests/c00040.vtc index f1efc96..b0511c7 100644 --- a/bin/varnishtest/tests/c00040.vtc +++ b/bin/varnishtest/tests/c00040.vtc @@ -26,25 +26,29 @@ server s1 { accept rxreq expect req.url == "/5" - txresp \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5" \ - -hdr "1...5: ..0" \ - -bodylen 5 + # Each line is 32 bytes. Total: 32 * 8 == 256 + send "HTTP/1.1 200 OK....0....5....0\r\n" + send "Content-Length: 4\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5...\r\n\r\n" + send "asdf" rxreq expect req.url == "/6" - txresp \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5....0" \ - -hdr "1...5: ..0....5....0....5....0....5" \ - -hdr "1...5: ..0." \ - -bodylen 6 + # Each line is 32 except last, which is 33. Total: 32 * 7 + 33 == 257 + send "HTTP/1.1 200 OK....0....5....0\r\n" + send "Content-Length: 4\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....0\r\n" + send "1...5: ..0....5....0....5....\r\n\r\n" + send "asdf" } -start varnish v1 \ diff --git a/bin/varnishtest/tests/r01834.vtc b/bin/varnishtest/tests/r01834.vtc new file mode 100644 index 0000000..1937da1 --- /dev/null +++ b/bin/varnishtest/tests/r01834.vtc @@ -0,0 +1,112 @@ +varnishtest "#1834 - Buffer overflow in backend workspace" + +# This test case checks fetch side for buffer overflow when there is little +# workspace left. If failing it would be because we tripped the canary +# at the end of the workspace. + +server s1 -repeat 64 { + rxreq + txresp +} -start + +varnish v1 -vcl+backend { + import debug; + import std; + + sub vcl_recv { + return (pass); + } + + sub vcl_backend_fetch { + debug.workspace_allocate(backend, debug.workspace_free(backend) - std.integer(bereq.http.WS, 256)); + } +} -start + +client c1 { + # Start with enough workspace to receive a good result + txreq -hdr "WS: 320" + rxresp + expect resp.status == 200 + + # Continue with decreasing workspaces by decrements of 8 (sizeof void*) + txreq -hdr "WS: 312" + rxresp + txreq -hdr "WS: 304" + rxresp + txreq -hdr "WS: 296" + rxresp + txreq -hdr "WS: 288" + rxresp + txreq -hdr "WS: 280" + rxresp + txreq -hdr "WS: 272" + rxresp + txreq -hdr "WS: 264" + rxresp + txreq -hdr "WS: 256" + rxresp + txreq -hdr "WS: 248" + rxresp + txreq -hdr "WS: 240" + rxresp + txreq -hdr "WS: 232" + rxresp + txreq -hdr "WS: 224" + rxresp + txreq -hdr "WS: 216" + rxresp + txreq -hdr "WS: 208" + rxresp + txreq -hdr "WS: 200" + rxresp + txreq -hdr "WS: 192" + rxresp + txreq -hdr "WS: 184" + rxresp + txreq -hdr "WS: 176" + rxresp + txreq -hdr "WS: 168" + rxresp + txreq -hdr "WS: 160" + rxresp + txreq -hdr "WS: 152" + rxresp + txreq -hdr "WS: 144" + rxresp + txreq -hdr "WS: 136" + rxresp + txreq -hdr "WS: 128" + rxresp + txreq -hdr "WS: 120" + rxresp + txreq -hdr "WS: 112" + rxresp + txreq -hdr "WS: 104" + rxresp + txreq -hdr "WS: 096" + rxresp + txreq -hdr "WS: 088" + rxresp + txreq -hdr "WS: 080" + rxresp + txreq -hdr "WS: 072" + rxresp + txreq -hdr "WS: 064" + rxresp + txreq -hdr "WS: 056" + rxresp + txreq -hdr "WS: 048" + rxresp + txreq -hdr "WS: 040" + rxresp + txreq -hdr "WS: 032" + rxresp + txreq -hdr "WS: 024" + rxresp + txreq -hdr "WS: 016" + rxresp + txreq -hdr "WS: 008" + rxresp + txreq -hdr "WS: 000" + rxresp +} -run From fgsch at lodoss.net Mon Dec 5 14:36:04 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Mon, 05 Dec 2016 15:36:04 +0100 Subject: [master] 0205cdf Disable Nagle's algorithm on the backend as well Message-ID: commit 0205cdf9e4b902d41df8197992da059bb41b3222 Author: Federico G. Schwindt Date: Sat Nov 19 23:29:22 2016 +0000 Disable Nagle's algorithm on the backend as well Fixes #2134. diff --git a/lib/libvarnish/vtcp.c b/lib/libvarnish/vtcp.c index 83e33b4..62a9fb6 100644 --- a/lib/libvarnish/vtcp.c +++ b/lib/libvarnish/vtcp.c @@ -279,6 +279,7 @@ VTCP_connect(const struct suckaddr *name, int msec) struct pollfd fds[1]; const struct sockaddr *sa; socklen_t sl; + int val; if (name == NULL) return (-1); @@ -296,6 +297,9 @@ VTCP_connect(const struct suckaddr *name, int msec) if (msec != 0) (void)VTCP_nonblocking(s); + val = 1; + AZ(setsockopt(s, IPPROTO_TCP, TCP_NODELAY, &val, sizeof val)); + i = connect(s, sa, sl); if (i == 0) return (s); From martin at varnish-software.com Mon Dec 5 15:00:06 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Mon, 05 Dec 2016 16:00:06 +0100 Subject: [4.1] a9e6766 Add an assert preventing buffer overflows Message-ID: commit a9e67666349b5654102621281022464408fe8df8 Author: Martin Blix Grydeland Date: Mon Nov 28 11:56:49 2016 +0100 Add an assert preventing buffer overflows Make sure that the workspace can accomodate the pipelined data before memmoving it into place in SES_RxReInit. diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c index 0e2a746..6c5930b 100644 --- a/bin/varnishd/cache/cache_session.c +++ b/bin/varnishd/cache/cache_session.c @@ -177,6 +177,7 @@ SES_RxReInit(struct http_conn *htc) if (htc->pipeline_b != NULL) { l = htc->pipeline_e - htc->pipeline_b; assert(l > 0); + assert(l <= htc->ws->r - htc->rxbuf_b); memmove(htc->rxbuf_b, htc->pipeline_b, l); htc->rxbuf_e += l; htc->pipeline_b = NULL; From martin at varnish-software.com Mon Dec 5 15:00:06 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Mon, 05 Dec 2016 16:00:06 +0100 Subject: [4.1] c1fa324 Fix buffer overflow in HTC_RxInit on workspace exhaustion Message-ID: commit c1fa32485906131013ccf252304487fd613708e1 Author: Martin Blix Grydeland Date: Mon Nov 28 16:41:21 2016 +0100 Fix buffer overflow in HTC_RxInit on workspace exhaustion HTC_RxInit and HTC_RxReInit could write a single '\0' NUL character outside of the workspace when its called and there is zero bytes left in the workspace. This would trigger the workspace canary causing subsequent assertion. Fix by releaving HTC_RxInit and HTC_RxReInit of adding the '\0' character. HTC_RxStuff and V1F_FetchRespHdr returns HTC_S_OVERFLOW if the available buffer space is zero. Both make sure to insert the '\0' character just before calling the completion check function. Note that this fix does not change the fact that we have exchausted the workspace and are unable to continue. Varnishd will panic nonetheless, but at least we have not stepped out of our boundries. Ref: #1834 diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c index 6c5930b..8c9c3b6 100644 --- a/bin/varnishd/cache/cache_session.c +++ b/bin/varnishd/cache/cache_session.c @@ -154,7 +154,6 @@ SES_RxInit(struct http_conn *htc, struct ws *ws, unsigned maxbytes, (void)WS_Reserve(htc->ws, htc->maxbytes); htc->rxbuf_b = ws->f; htc->rxbuf_e = ws->f; - *htc->rxbuf_e = '\0'; htc->pipeline_b = NULL; htc->pipeline_e = NULL; } @@ -183,7 +182,6 @@ SES_RxReInit(struct http_conn *htc) htc->pipeline_b = NULL; htc->pipeline_e = NULL; } - *htc->rxbuf_e = '\0'; } /*---------------------------------------------------------------------- @@ -206,13 +204,24 @@ SES_RxStuff(struct http_conn *htc, htc_complete_f *func, int i; CHECK_OBJ_NOTNULL(htc, HTTP_CONN_MAGIC); + AN(htc->ws->r); + AN(htc->rxbuf_b); + assert(htc->rxbuf_b <= htc->rxbuf_e); AZ(isnan(tn)); if (t1 != NULL) assert(isnan(*t1)); + if (htc->rxbuf_e == htc->ws->r) { + /* Can't work with a zero size buffer */ + WS_ReleaseP(htc->ws, htc->rxbuf_b); + return (HTC_S_OVERFLOW); + } + while (1) { now = VTIM_real(); + assert(htc->rxbuf_e < htc->ws->r); + *htc->rxbuf_e = '\0'; hs = func(htc); if (hs == HTC_S_OVERFLOW || hs == HTC_S_JUNK) { WS_ReleaseP(htc->ws, htc->rxbuf_b); @@ -248,10 +257,9 @@ SES_RxStuff(struct http_conn *htc, htc_complete_f *func, if (i == 0 || i == -1) { WS_ReleaseP(htc->ws, htc->rxbuf_b); return (HTC_S_EOF); - } else if (i > 0) { + } else if (i > 0) htc->rxbuf_e += i; - *htc->rxbuf_e = '\0'; - } else if (i == -2) { + else if (i == -2) { if (hs == HTC_S_EMPTY && ti <= now) { WS_ReleaseP(htc->ws, htc->rxbuf_b); return (HTC_S_IDLE); diff --git a/bin/varnishd/http1/cache_http1_proto.c b/bin/varnishd/http1/cache_http1_proto.c index e4c9053..3f3e45f 100644 --- a/bin/varnishd/http1/cache_http1_proto.c +++ b/bin/varnishd/http1/cache_http1_proto.c @@ -80,7 +80,6 @@ HTTP1_Complete(struct http_conn *htc) if (p == htc->rxbuf_e) { /* All white space */ htc->rxbuf_e = htc->rxbuf_b; - *htc->rxbuf_e = '\0'; return (HTC_S_EMPTY); } /* From martin at varnish-software.com Mon Dec 5 15:00:06 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Mon, 05 Dec 2016 16:00:06 +0100 Subject: [4.1] debcb99 Increase delay in r02035.vtc Message-ID: commit debcb99d1b69eba863a17cc7f1749e53ce0c5e1b Author: Martin Blix Grydeland Date: Mon Dec 5 15:58:10 2016 +0100 Increase delay in r02035.vtc Increase the Nagle-avoidance delay in r02035.vtc to make the test case less timing sensitive. diff --git a/bin/varnishtest/tests/r02035.vtc b/bin/varnishtest/tests/r02035.vtc index d74dd00..401e86d 100644 --- a/bin/varnishtest/tests/r02035.vtc +++ b/bin/varnishtest/tests/r02035.vtc @@ -8,7 +8,7 @@ server s1 { # would be in the same packet as the headers, and would end # up as pipelined data. Pipelined data wouldn't create a streaming # data event, breaking the test case. - delay 0.5 + delay 1 send_n 10 "A" # Sema r1 halts the backend thread until client c1 is finished. sema r1 sync 2 From phk at FreeBSD.org Mon Dec 5 15:06:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Mon, 05 Dec 2016 16:06:05 +0100 Subject: [master] c878e79 Always include now for TCP_NODELAY Message-ID: commit c878e79eb2937695a737d565ead391147231499a Author: Poul-Henning Kamp Date: Mon Dec 5 15:04:48 2016 +0000 Always include now for TCP_NODELAY diff --git a/lib/libvarnish/vtcp.c b/lib/libvarnish/vtcp.c index 62a9fb6..d28b99c 100644 --- a/lib/libvarnish/vtcp.c +++ b/lib/libvarnish/vtcp.c @@ -38,9 +38,7 @@ #endif #include -#ifdef __linux -# include -#endif +#include #include #include From phk at FreeBSD.org Mon Dec 5 19:17:04 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Mon, 05 Dec 2016 20:17:04 +0100 Subject: [master] 7e99c80 Export VTIM_format() so varnishhist doesn't need libvarnish to get that. Message-ID: commit 7e99c801b3e3578073746e8aa03f840e7b5efd58 Author: Poul-Henning Kamp Date: Mon Dec 5 19:16:21 2016 +0000 Export VTIM_format() so varnishhist doesn't need libvarnish to get that. diff --git a/bin/varnishhist/Makefile.am b/bin/varnishhist/Makefile.am index 49d2409..e01374b 100644 --- a/bin/varnishhist/Makefile.am +++ b/bin/varnishhist/Makefile.am @@ -17,7 +17,6 @@ varnishhist_CFLAGS = \ varnishhist_LDADD = \ $(top_builddir)/lib/libvarnishcompat/libvarnishcompat.la \ $(top_builddir)/lib/libvarnishapi/libvarnishapi.la \ - $(top_builddir)/lib/libvarnish/libvarnish.la \ -lm \ @SAN_LDFLAGS@ \ @CURSES_LIB@ ${RT_LIBS} ${PTHREAD_LIBS} diff --git a/lib/libvarnishapi/libvarnishapi.map b/lib/libvarnishapi/libvarnishapi.map index f9d189a..18d39e1 100644 --- a/lib/libvarnishapi/libvarnishapi.map +++ b/lib/libvarnishapi/libvarnishapi.map @@ -162,3 +162,8 @@ LIBVARNISHAPI_1.5 { VCS_Message; } LIBVARNISHAPI_1.0; + +LIBVARNISHAPI_1.6 { + global: + VTIM_format; +} LIBVARNISHAPI_1.0; From fgsch at lodoss.net Mon Dec 5 20:01:04 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Mon, 05 Dec 2016 21:01:04 +0100 Subject: [master] 932035b Make libvarnish, libvcc and libvgz static Message-ID: commit 932035b6d11896e41a9728e0c3fd809f01e0b56b Author: Federico G. Schwindt Date: Mon Dec 5 19:25:10 2016 +0000 Make libvarnish, libvcc and libvgz static diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am index 1d02ba0..0d541ca 100644 --- a/bin/varnishd/Makefile.am +++ b/bin/varnishd/Makefile.am @@ -150,10 +150,10 @@ varnishd_CFLAGS = \ varnishd_LDFLAGS = -export-dynamic varnishd_LDADD = \ - $(top_builddir)/lib/libvarnish/libvarnish.la \ + $(top_builddir)/lib/libvarnish/libvarnish.a \ $(top_builddir)/lib/libvarnishcompat/libvarnishcompat.la \ - $(top_builddir)/lib/libvcc/libvcc.la \ - $(top_builddir)/lib/libvgz/libvgz.la \ + $(top_builddir)/lib/libvcc/libvcc.a \ + $(top_builddir)/lib/libvgz/libvgz.a \ @SAN_LDFLAGS@ \ @JEMALLOC_LDADD@ \ @PCRE_LIBS@ \ @@ -163,19 +163,19 @@ noinst_PROGRAMS = vhp_gen_hufdec vhp_gen_hufdec_SOURCES = hpack/vhp_gen_hufdec.c vhp_gen_hufdec_CFLAGS = -include config.h vhp_gen_hufdec_LDADD = \ - $(top_builddir)/lib/libvarnish/libvarnish.la + $(top_builddir)/lib/libvarnish/libvarnish.a noinst_PROGRAMS += vhp_table_test vhp_table_test_SOURCES = hpack/vhp_table.c vhp_table_test_CFLAGS = -DTABLE_TEST_DRIVER -include config.h vhp_table_test_LDADD = \ - $(top_builddir)/lib/libvarnish/libvarnish.la + $(top_builddir)/lib/libvarnish/libvarnish.a noinst_PROGRAMS += vhp_decode_test vhp_decode_test_SOURCES = hpack/vhp_decode.c hpack/vhp_table.c vhp_decode_test_CFLAGS = -DDECODE_TEST_DRIVER -include config.h vhp_decode_test_LDADD = \ - $(top_builddir)/lib/libvarnish/libvarnish.la + $(top_builddir)/lib/libvarnish/libvarnish.a TESTS = vhp_table_test vhp_decode_test diff --git a/bin/varnishtest/Makefile.am b/bin/varnishtest/Makefile.am index 26563e2..3b738b3 100644 --- a/bin/varnishtest/Makefile.am +++ b/bin/varnishtest/Makefile.am @@ -49,11 +49,12 @@ varnishtest_SOURCES = \ vtc_varnish.c varnishtest_LDADD = \ - $(top_builddir)/lib/libvarnish/libvarnish.la \ + $(top_builddir)/lib/libvarnish/libvarnish.a \ $(top_builddir)/lib/libvarnishcompat/libvarnishcompat.la \ $(top_builddir)/lib/libvarnishapi/libvarnishapi.la \ - $(top_builddir)/lib/libvgz/libvgz.la \ + $(top_builddir)/lib/libvgz/libvgz.a \ @SAN_LDFLAGS@ \ + @PCRE_LIBS@ \ ${LIBM} ${PTHREAD_LIBS} varnishtest_CFLAGS = \ diff --git a/lib/libvarnish/Makefile.am b/lib/libvarnish/Makefile.am index d98cfca..38db461 100644 --- a/lib/libvarnish/Makefile.am +++ b/lib/libvarnish/Makefile.am @@ -1,3 +1,5 @@ +# + AM_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(top_builddir)/include \ @@ -5,11 +7,15 @@ AM_CPPFLAGS = \ AM_LDFLAGS = $(AM_LT_LDFLAGS) -pkglib_LTLIBRARIES = libvarnish.la +noinst_LIBRARIES = libvarnish.a + +libvarnish_a_CFLAGS = \ + -DVARNISH_STATE_DIR='"${VARNISH_STATE_DIR}"' \ + @SAN_CFLAGS@ -libvarnish_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version +libvarnish_a_LDFLAGS = $(AM_LDFLAGS) -libvarnish_la_SOURCES = \ +libvarnish_a_SOURCES = \ binary_heap.c \ vas.c \ vav.c \ @@ -35,12 +41,6 @@ libvarnish_la_SOURCES = \ vtcp.c \ vtim.c -libvarnish_la_CFLAGS = \ - -DVARNISH_STATE_DIR='"${VARNISH_STATE_DIR}"' \ - @SAN_CFLAGS@ -libvarnish_la_LIBADD = ${RT_LIBS} ${NET_LIBS} ${LIBM} @PCRE_LIBS@ \ - @SAN_LDFLAGS@ - TESTS = vnum_c_test noinst_PROGRAMS = ${TESTS} diff --git a/lib/libvcc/Makefile.am b/lib/libvcc/Makefile.am index 70fad80..311d849 100644 --- a/lib/libvcc/Makefile.am +++ b/lib/libvcc/Makefile.am @@ -6,18 +6,17 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(top_builddir)/include -pkglib_LTLIBRARIES = libvcc.la +noinst_LIBRARIES = libvcc.a -libvcc_la_CFLAGS = \ +libvcc_a_CFLAGS = \ @SAN_CFLAGS@ -libvcc_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version \ +libvcc_a_LDFLAGS = $(AM_LDFLAGS) \ @SAN_LDFLAGS@ -libvcc_la_SOURCES = \ +libvcc_a_SOURCES = \ vcc_compile.h \ vcc_token_defs.h \ - \ vcc_acl.c \ vcc_action.c \ vcc_backend.c \ diff --git a/lib/libvgz/Makefile.am b/lib/libvgz/Makefile.am index f4aa8e9..4d159f0 100644 --- a/lib/libvgz/Makefile.am +++ b/lib/libvgz/Makefile.am @@ -1,14 +1,16 @@ # + AM_LDFLAGS = $(AM_LT_LDFLAGS) -pkglib_LTLIBRARIES = libvgz.la +noinst_LIBRARIES = libvgz.a + +libvgz_a_CFLAGS = -D_LARGEFILE64_SOURCE=1 -DZLIB_CONST \ + $(libvgz_extra_cflags) @SAN_CFLAGS@ -libvgz_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version \ +libvgz_a_LDFLAGS = $(AM_LDFLAGS) \ @SAN_LDFLAGS@ -libvgz_la_CFLAGS = -D_LARGEFILE64_SOURCE=1 -DZLIB_CONST $(libvgz_extra_cflags) \ - @SAN_CFLAGS@ -libvgz_la_SOURCES = \ +libvgz_a_SOURCES = \ adler32.c \ compress.c \ crc32.c \ From fgsch at lodoss.net Mon Dec 5 20:14:04 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Mon, 05 Dec 2016 21:14:04 +0100 Subject: [master] d4ccf56 Add missing dependencies Message-ID: commit d4ccf56a9ee10fd7c15d23b7fe688612c12f5615 Author: Federico G. Schwindt Date: Mon Dec 5 20:13:23 2016 +0000 Add missing dependencies diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am index 0d541ca..41fcf85 100644 --- a/bin/varnishd/Makefile.am +++ b/bin/varnishd/Makefile.am @@ -157,7 +157,7 @@ varnishd_LDADD = \ @SAN_LDFLAGS@ \ @JEMALLOC_LDADD@ \ @PCRE_LIBS@ \ - ${DL_LIBS} ${PTHREAD_LIBS} ${NET_LIBS} ${LIBM} ${UMEM_LIBS} + ${DL_LIBS} ${PTHREAD_LIBS} ${NET_LIBS} ${RT_LIBS} ${LIBM} ${UMEM_LIBS} noinst_PROGRAMS = vhp_gen_hufdec vhp_gen_hufdec_SOURCES = hpack/vhp_gen_hufdec.c diff --git a/bin/varnishtest/Makefile.am b/bin/varnishtest/Makefile.am index 3b738b3..1da5b60 100644 --- a/bin/varnishtest/Makefile.am +++ b/bin/varnishtest/Makefile.am @@ -55,7 +55,7 @@ varnishtest_LDADD = \ $(top_builddir)/lib/libvgz/libvgz.a \ @SAN_LDFLAGS@ \ @PCRE_LIBS@ \ - ${LIBM} ${PTHREAD_LIBS} + ${PTHREAD_LIBS} ${NET_LIBS} ${LIBM} varnishtest_CFLAGS = \ @SAN_CFLAGS@ \ From office at varnish-cache.org Mon Dec 5 22:25:23 2016 From: office at varnish-cache.org (office at varnish-cache.org) Date: Tue, 06 Dec 2016 03:55:23 +0530 Subject: Scanned image from MX2310U@varnish-cache.org Message-ID: <20161206035523.E6699494.OFFICE@varnish-cache.org> Reply to: office at varnish-cache.org Device Name: MX2310U at varnish-cache.org Device Model: MX-2310U Location: Reception File Format: PDF MMR(G4) Resolution: 200dpi x 200dpi Attached file is scanned image in PDF format(RAR archive). Use Acrobat(R)Reader(R) or Adobe(R)Reader(R) of Adobe Systems Incorporated to view the document. Adobe(R)Reader(R) can be downloaded from the following URL: Adobe, the Adobe logo, Acrobat, the Adobe PDF logo, and Reader are registered trademarks or trademarks of Adobe Systems Incorporated in the United States and other countries. http://www.adobe.com/ -------------- next part -------------- A non-text attachment was scrubbed... Name: office at varnish-cache.org_20161206_035523.zip Type: application/octet-stream Size: 6071 bytes Desc: not available URL: From office at varnish-cache.org Mon Dec 5 21:49:05 2016 From: office at varnish-cache.org (office at varnish-cache.org) Date: Tue, 06 Dec 2016 02:19:05 +0430 Subject: Scanned image from MX2310U@varnish-cache.org Message-ID: <20161206021905.4C3691902C.OFFICE@varnish-cache.org> Reply to: office at varnish-cache.org Device Name: MX2310U at varnish-cache.org Device Model: MX-2310U Location: Reception File Format: PDF MMR(G4) Resolution: 200dpi x 200dpi Attached file is scanned image in PDF format(RAR archive). Use Acrobat(R)Reader(R) or Adobe(R)Reader(R) of Adobe Systems Incorporated to view the document. Adobe(R)Reader(R) can be downloaded from the following URL: Adobe, the Adobe logo, Acrobat, the Adobe PDF logo, and Reader are registered trademarks or trademarks of Adobe Systems Incorporated in the United States and other countries. http://www.adobe.com/ -------------- next part -------------- A non-text attachment was scrubbed... Name: office at varnish-cache.org_20161206_021905.zip Type: application/octet-stream Size: 6080 bytes Desc: not available URL: From fgsch at lodoss.net Mon Dec 5 23:33:04 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Tue, 06 Dec 2016 00:33:04 +0100 Subject: [master] ea4b77c Remove warnings and add libm to libvarnishapi Message-ID: commit ea4b77cac2a76b59362b765179014421e38a9f64 Author: Federico G. Schwindt Date: Mon Dec 5 23:29:07 2016 +0000 Remove warnings and add libm to libvarnishapi diff --git a/lib/libvarnish/Makefile.am b/lib/libvarnish/Makefile.am index 38db461..6e008d9 100644 --- a/lib/libvarnish/Makefile.am +++ b/lib/libvarnish/Makefile.am @@ -13,8 +13,6 @@ libvarnish_a_CFLAGS = \ -DVARNISH_STATE_DIR='"${VARNISH_STATE_DIR}"' \ @SAN_CFLAGS@ -libvarnish_a_LDFLAGS = $(AM_LDFLAGS) - libvarnish_a_SOURCES = \ binary_heap.c \ vas.c \ diff --git a/lib/libvarnishapi/Makefile.am b/lib/libvarnishapi/Makefile.am index 455cf3a..9c04122 100644 --- a/lib/libvarnishapi/Makefile.am +++ b/lib/libvarnishapi/Makefile.am @@ -48,8 +48,8 @@ libvarnishapi_la_CFLAGS = \ -DVARNISH_STATE_DIR='"${VARNISH_STATE_DIR}"' \ @SAN_CFLAGS@ -libvarnishapi_la_LIBADD = @PCRE_LIBS@ @RT_LIBS@ \ - @SAN_LDFLAGS@ +libvarnishapi_la_LIBADD = \ + @SAN_LDFLAGS@ @PCRE_LIBS@ ${RT_LIBS} ${LIBM} if HAVE_LD_VERSION_SCRIPT libvarnishapi_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libvarnishapi.map diff --git a/lib/libvcc/Makefile.am b/lib/libvcc/Makefile.am index 311d849..795b173 100644 --- a/lib/libvcc/Makefile.am +++ b/lib/libvcc/Makefile.am @@ -11,9 +11,6 @@ noinst_LIBRARIES = libvcc.a libvcc_a_CFLAGS = \ @SAN_CFLAGS@ -libvcc_a_LDFLAGS = $(AM_LDFLAGS) \ - @SAN_LDFLAGS@ - libvcc_a_SOURCES = \ vcc_compile.h \ vcc_token_defs.h \ diff --git a/lib/libvgz/Makefile.am b/lib/libvgz/Makefile.am index 4d159f0..74afccf 100644 --- a/lib/libvgz/Makefile.am +++ b/lib/libvgz/Makefile.am @@ -7,9 +7,6 @@ noinst_LIBRARIES = libvgz.a libvgz_a_CFLAGS = -D_LARGEFILE64_SOURCE=1 -DZLIB_CONST \ $(libvgz_extra_cflags) @SAN_CFLAGS@ -libvgz_a_LDFLAGS = $(AM_LDFLAGS) \ - @SAN_LDFLAGS@ - libvgz_a_SOURCES = \ adler32.c \ compress.c \ From phk at FreeBSD.org Wed Dec 7 08:49:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Wed, 07 Dec 2016 09:49:05 +0100 Subject: [master] 817176c Issue a warning that $Event documentation isn't emitted in .RST Message-ID: commit 817176c744a0fd355b1cc61579dadd1f2ea274e2 Author: Poul-Henning Kamp Date: Wed Dec 7 08:45:28 2016 +0000 Issue a warning that $Event documentation isn't emitted in .RST Closes #2155 diff --git a/lib/libvcc/vmodtool.py b/lib/libvcc/vmodtool.py index 60415f2..8966c0a 100755 --- a/lib/libvcc/vmodtool.py +++ b/lib/libvcc/vmodtool.py @@ -465,6 +465,11 @@ class s_event(stanza): self.vcc.contents.append(self) def rstfile(self, fo, man): + if len(self.doc) != 0: + sys.stderr.write( + "NB: Not emitting .RST for $Event %s\n" % + self.event_func + ) return def hfile(self, fo): diff --git a/lib/libvmod_debug/vmod.vcc b/lib/libvmod_debug/vmod.vcc index 204affd..ca61e45 100644 --- a/lib/libvmod_debug/vmod.vcc +++ b/lib/libvmod_debug/vmod.vcc @@ -35,6 +35,9 @@ of VMOD handling in Varnish. $Event event_function + +You are not supposed to be able to see this text in the .RST + $Function VOID panic(STRING_LIST) Don't. From phk at FreeBSD.org Wed Dec 7 09:50:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Wed, 07 Dec 2016 10:50:05 +0100 Subject: [master] ec59b44 Limit VSL size to 4G-1b Message-ID: commit ec59b44e5c4aa917aae3795ed5a65438db8c515a Author: Poul-Henning Kamp Date: Wed Dec 7 09:48:59 2016 +0000 Limit VSL size to 4G-1b Closes #1750 diff --git a/include/tbl/params.h b/include/tbl/params.h index 1cdecbb..4f30ea5 100644 --- a/include/tbl/params.h +++ b/include/tbl/params.h @@ -1505,7 +1505,7 @@ PARAM( /* name */ vsl_space, /* typ */ bytes, /* min */ "1M", - /* max */ NULL, + /* max */ "4294967295", // 4G-1 /* default */ "80M", /* units */ "bytes", /* flags */ MUST_RESTART, From phk at FreeBSD.org Wed Dec 7 10:02:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Wed, 07 Dec 2016 11:02:05 +0100 Subject: [master] 3a3aa94 Allow symbols to be defined after use, provided their use gives them a clear type. Message-ID: commit 3a3aa94239a9b9df5b843167fa5e83e653826754 Author: Poul-Henning Kamp Date: Wed Dec 7 10:00:27 2016 +0000 Allow symbols to be defined after use, provided their use gives them a clear type. Fixes #2016 diff --git a/bin/varnishtest/tests/c00005.vtc b/bin/varnishtest/tests/c00005.vtc index 99a7e5d..b3b1e95 100644 --- a/bin/varnishtest/tests/c00005.vtc +++ b/bin/varnishtest/tests/c00005.vtc @@ -10,15 +10,16 @@ server s1 { } -start varnish v1 -arg "-p vsl_mask=+VCL_trace" -vcl+backend { - acl acl1 { - "${localhost}"; - } - sub vcl_recv { if (client.ip ~ acl1) { set req.url = "/"; } } + + acl acl1 { + "${localhost}"; + } + sub vcl_deliver { set resp.http.acl = acl1; } diff --git a/lib/libvcc/vcc_symb.c b/lib/libvcc/vcc_symb.c index c1aa72f..03b5272 100644 --- a/lib/libvcc/vcc_symb.c +++ b/lib/libvcc/vcc_symb.c @@ -235,13 +235,14 @@ VCC_HandleSymbol(struct vcc *tl, const struct token *tk, vcc_type_t fmt, AN(sym->def_b); vcc_ErrWhere(tl, sym->def_b); return (sym); - } else if (sym != NULL) { + } else if (sym != NULL && sym->kind != kind) { VSB_printf(tl->sb, "Name %.*s is a reserved name.\n", PF(tk)); vcc_ErrWhere(tl, tk); return (sym); } - sym = VCC_SymbolTok(tl, NULL, tk, kind, 1); + if (sym == NULL) + sym = VCC_SymbolTok(tl, NULL, tk, kind, 1); AN(sym); AZ(sym->ndef); va_start(ap, str); From fgsch at lodoss.net Wed Dec 7 10:10:06 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Wed, 07 Dec 2016 11:10:06 +0100 Subject: [master] a0f5838 Change this to err so it fails under --strict Message-ID: commit a0f58380c786d052e81e5673e03819d820b3f441 Author: Federico G. Schwindt Date: Wed Dec 7 09:04:56 2016 +0000 Change this to err so it fails under --strict diff --git a/lib/libvcc/vmodtool.py b/lib/libvcc/vmodtool.py index 8966c0a..377605b 100755 --- a/lib/libvcc/vmodtool.py +++ b/lib/libvcc/vmodtool.py @@ -466,11 +466,8 @@ class s_event(stanza): def rstfile(self, fo, man): if len(self.doc) != 0: - sys.stderr.write( - "NB: Not emitting .RST for $Event %s\n" % - self.event_func - ) - return + err("Not emitting .RST for $Event %s\n" % + self.event_func) def hfile(self, fo): fo.write("#ifdef VCL_MET_MAX\n") From phk at FreeBSD.org Wed Dec 7 10:10:06 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Wed, 07 Dec 2016 11:10:06 +0100 Subject: [master] 452ac52 DuH! Message-ID: commit 452ac52177d17de08168c6fd514a346a9a92f302 Author: Poul-Henning Kamp Date: Wed Dec 7 10:09:02 2016 +0000 DuH! We already had a check that took care of this in an architecture independent way. diff --git a/bin/varnishtest/tests/c00005.vtc b/bin/varnishtest/tests/c00005.vtc index b3b1e95..a3da9f6 100644 --- a/bin/varnishtest/tests/c00005.vtc +++ b/bin/varnishtest/tests/c00005.vtc @@ -9,6 +9,18 @@ server s1 { txresp -body "2222\n" } -start +varnish v1 -errvcl {foo} { + sub vcl_recv { + if (client.ip ~ acl1) { + set req.url = "/"; + } + } + + backend acl1 { + .host = "127.0.0.1"; + } +} + varnish v1 -arg "-p vsl_mask=+VCL_trace" -vcl+backend { sub vcl_recv { if (client.ip ~ acl1) { diff --git a/include/tbl/params.h b/include/tbl/params.h index 4f30ea5..1cdecbb 100644 --- a/include/tbl/params.h +++ b/include/tbl/params.h @@ -1505,7 +1505,7 @@ PARAM( /* name */ vsl_space, /* typ */ bytes, /* min */ "1M", - /* max */ "4294967295", // 4G-1 + /* max */ NULL, /* default */ "80M", /* units */ "bytes", /* flags */ MUST_RESTART, From fgsch at lodoss.net Wed Dec 7 10:19:05 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Wed, 07 Dec 2016 11:19:05 +0100 Subject: [master] d31792a And drop --strict from here Message-ID: commit d31792a31c71a627ed63bcafeda4177dfdf0c977 Author: Federico G. Schwindt Date: Wed Dec 7 10:17:45 2016 +0000 And drop --strict from here diff --git a/lib/libvmod_debug/Makefile.am b/lib/libvmod_debug/Makefile.am index 7478069..4376ef5 100644 --- a/lib/libvmod_debug/Makefile.am +++ b/lib/libvmod_debug/Makefile.am @@ -9,7 +9,7 @@ AM_CPPFLAGS = \ vmoddir = $(pkglibdir)/vmods vmod_srcdir = $(top_srcdir)/lib/libvmod_debug vmodtool = $(top_srcdir)/lib/libvcc/vmodtool.py -vmodtoolargs = --strict +vmodtoolargs = noinst_LTLIBRARIES = libvmod_debug.la From phk at FreeBSD.org Wed Dec 7 10:48:04 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Wed, 07 Dec 2016 11:48:04 +0100 Subject: [master] b75d595 Be more clear about redefining symbols of different expected type Message-ID: commit b75d595d07ee8267604d788453abc11d5b90c210 Author: Poul-Henning Kamp Date: Wed Dec 7 10:46:41 2016 +0000 Be more clear about redefining symbols of different expected type Fixes #2021 diff --git a/bin/varnishtest/tests/c00005.vtc b/bin/varnishtest/tests/c00005.vtc index a3da9f6..9343306 100644 --- a/bin/varnishtest/tests/c00005.vtc +++ b/bin/varnishtest/tests/c00005.vtc @@ -9,7 +9,7 @@ server s1 { txresp -body "2222\n" } -start -varnish v1 -errvcl {foo} { +varnish v1 -errvcl {Name acl1 must have type 'acl'.} { sub vcl_recv { if (client.ip ~ acl1) { set req.url = "/"; diff --git a/bin/varnishtest/tests/r01510.vtc b/bin/varnishtest/tests/r01510.vtc index a8eb7f7..7e1555b 100644 --- a/bin/varnishtest/tests/r01510.vtc +++ b/bin/varnishtest/tests/r01510.vtc @@ -8,7 +8,7 @@ varnish v1 -errvcl {Instance 'first' redefined.} { } } -varnish v1 -errvcl {Name 'first' already used.} { +varnish v1 -errvcl {Name 'first' already defined.} { import debug; backend first { .host = "${bad_ip}"; .port = "9080"; } diff --git a/bin/varnishtest/tests/r01569.vtc b/bin/varnishtest/tests/r01569.vtc index e3e2b1c..aed91b1 100644 --- a/bin/varnishtest/tests/r01569.vtc +++ b/bin/varnishtest/tests/r01569.vtc @@ -1,6 +1,6 @@ varnishtest "symbol lookup order issue" -varnish v1 -errvcl {Name 'debug' already used.} { +varnish v1 -errvcl {Name 'debug' already defined.} { vcl 4.0; import debug; diff --git a/lib/libvcc/vcc_symb.c b/lib/libvcc/vcc_symb.c index 03b5272..03b069f 100644 --- a/lib/libvcc/vcc_symb.c +++ b/lib/libvcc/vcc_symb.c @@ -229,7 +229,7 @@ VCC_HandleSymbol(struct vcc *tl, const struct token *tk, vcc_type_t fmt, vcc_ErrWhere(tl, sym->def_b); return (sym); } else if (sym != NULL && sym->def_b != NULL) { - VSB_printf(tl->sb, "Name '%.*s' already used.\n", PF(tk)); + VSB_printf(tl->sb, "Name '%.*s' already defined.\n", PF(tk)); vcc_ErrWhere(tl, tk); VSB_printf(tl->sb, "First definition:\n"); AN(sym->def_b); @@ -237,7 +237,8 @@ VCC_HandleSymbol(struct vcc *tl, const struct token *tk, vcc_type_t fmt, return (sym); } else if (sym != NULL && sym->kind != kind) { VSB_printf(tl->sb, - "Name %.*s is a reserved name.\n", PF(tk)); + "Name %.*s must have type '%s'.\n", + PF(tk), VCC_SymKind(tl, sym)); vcc_ErrWhere(tl, tk); return (sym); } From nils.goroll at uplex.de Wed Dec 7 11:05:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 12:05:05 +0100 Subject: [master] 4bdfa56 vtest: optionally limit the number of runs Message-ID: commit 4bdfa56ce1e134de7639cec84f8acb1f4a33f40a Author: Nils Goroll Date: Wed Dec 7 11:53:59 2016 +0100 vtest: optionally limit the number of runs This allows unattended updates of vtest.sh itself by looping externally diff --git a/tools/vtest.sh b/tools/vtest.sh index 5eff55c..befc44f 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -44,6 +44,7 @@ WAITPERIOD=60 # unit: Seconds WAITGOOD=60 # unit: WAITPERIOD WAITBAD=1 # unit: WAITPERIOD +MAXRUNS="${MAXRUNS:-0}" SSH_DST="-p 203 vtest at varnish-cache.org" @@ -125,9 +126,12 @@ fi orev=000 waitnext=${WAITBAD} +i=0 -while true +while [ $MAXRUNS -eq 0 ] || [ $i -lt $MAXRUNS ] do + i=`expr $i + 1` + (cd varnish-cache && git pull > /dev/null 2>&1 || true) rev=`cd varnish-cache && git show -s --pretty=format:%H` if [ "${waitnext}" -gt 0 -a "x${rev}" = "x${orev}" ] ; then From nils.goroll at uplex.de Wed Dec 7 11:13:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 12:13:04 +0100 Subject: [master] cb91e43 modernize just enough Message-ID: commit cb91e43a944183887f2cdab6bb93ca1abc4977a3 Author: Nils Goroll Date: Wed Dec 7 12:12:37 2016 +0100 modernize just enough diff --git a/tools/vtest.sh b/tools/vtest.sh index befc44f..312c08e 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -130,7 +130,7 @@ i=0 while [ $MAXRUNS -eq 0 ] || [ $i -lt $MAXRUNS ] do - i=`expr $i + 1` + i=$((i + 1)) (cd varnish-cache && git pull > /dev/null 2>&1 || true) rev=`cd varnish-cache && git show -s --pretty=format:%H` From nils.goroll at uplex.de Wed Dec 7 11:19:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 12:19:05 +0100 Subject: [master] 4cbb030 vtest: for MESSAGE to be useful, we need a way to set it Message-ID: commit 4cbb030c6609de0867a75f9563d24454bfbfba8b Author: Nils Goroll Date: Wed Dec 7 12:18:29 2016 +0100 vtest: for MESSAGE to be useful, we need a way to set it diff --git a/tools/vtest.sh b/tools/vtest.sh index 312c08e..cf605f8 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -38,7 +38,7 @@ mkdir -p tmp # Message to be shown in result pages # Max 10 char of [A-Za-z0-9/. _-] -MESSAGE= +MESSAGE="${MESSAGE:-}" WAITPERIOD=60 # unit: Seconds From fgsch at lodoss.net Wed Dec 7 12:21:05 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Wed, 07 Dec 2016 13:21:05 +0100 Subject: [master] e49133d Ignore static libraries too Message-ID: commit e49133d41089ebb2068ce75c6b7aae8333cc337a Author: Federico G. Schwindt Date: Wed Dec 7 10:37:17 2016 +0000 Ignore static libraries too diff --git a/.gitignore b/.gitignore index 5d9e107..f2993f7 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ Makefile.in .deps/ .libs/ *.o +*.a *.lo *.la *~ From nils.goroll at uplex.de Wed Dec 7 12:56:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 13:56:04 +0100 Subject: [master] 01689b9 autogen.des / vtest.sh : support out-of-tree builds Message-ID: commit 01689b987ebfffdc0b4e01af59406840a7d6fc61 Author: Nils Goroll Date: Wed Dec 7 12:36:49 2016 +0100 autogen.des / vtest.sh : support out-of-tree builds ... which revealed that they actually fail atm, so another fix will be coming up diff --git a/autogen.des b/autogen.des index d98980d..6b75a76 100755 --- a/autogen.des +++ b/autogen.des @@ -2,6 +2,8 @@ # # Use this when doing code development +SRCDIR=${SRCDIR:-.} + set -ex make -k distclean > /dev/null 2>&1 || true @@ -21,7 +23,7 @@ else fi rm -f configure -. ./autogen.sh 2>&1 | egrep -v "(subdir-objects|is in a subdirectory)" +(cd $SRCDIR && . ./autogen.sh 2>&1 | egrep -v "(subdir-objects|is in a subdirectory)") # autoconf prior to 2.62 has issues with zsh 4.2 and newer export CONFIG_SHELL=/bin/sh @@ -29,7 +31,7 @@ export CONFIG_SHELL=/bin/sh # NB: Workaround for make distcheck not working with # NB: FreeBSD's make on -current # env MAKE=gmake \ -./configure \ +$SRCDIR/configure \ $DST \ --enable-developer-warnings \ --enable-debugging-symbols \ diff --git a/tools/vtest.sh b/tools/vtest.sh index cf605f8..ea5b791 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -48,6 +48,9 @@ MAXRUNS="${MAXRUNS:-0}" SSH_DST="-p 203 vtest at varnish-cache.org" +export SRCDIR=`pwd`/varnish-cache +export BUILDDIR=${BUILDDIR:-${SRCDIR}} + ####################################################################### if ! (cd varnish-cache 2>/dev/null) ; then @@ -62,14 +65,14 @@ fi autogen () ( set -e - cd varnish-cache + cd "${BUILDDIR}" nice make distclean > /dev/null 2>&1 || true - nice sh autogen.des + nice sh "${SRCDIR}"/autogen.des ) makedistcheck () ( set -e - cd varnish-cache + cd "${BUILDDIR}" nice make distcheck ) @@ -82,7 +85,7 @@ failedtests () ( git log -n 1 ${t} | head -1 ) b=`basename ${t} .vtc` - for i in `find varnish-cache -name ${b}.log -print` + for i in `find "${BUILDDIR}" -name ${b}.log -print` do if [ -f ${i} ] ; then mv ${i} "_report/_${b}.log" @@ -142,6 +145,11 @@ do waitnext=${WAITBAD} orev=${rev} + if ! [ -d "${BUILDDIR}" ] && ! mkdir -p "${BUILDDIR}" ; then + echo >&1 "could not create BUILDDIR ${BUILDDIR}" + exit 2 + fi + rm -rf _report mkdir _report export LOG=_report/_log From nils.goroll at uplex.de Wed Dec 7 12:58:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 13:58:05 +0100 Subject: [master] 17a55ac stupid typo Message-ID: commit 17a55acacea546f3e4c4b3b63f57724845dc4d7c Author: Nils Goroll Date: Wed Dec 7 13:57:00 2016 +0100 stupid typo diff --git a/tools/vtest.sh b/tools/vtest.sh index ea5b791..4aed61a 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -146,7 +146,7 @@ do orev=${rev} if ! [ -d "${BUILDDIR}" ] && ! mkdir -p "${BUILDDIR}" ; then - echo >&1 "could not create BUILDDIR ${BUILDDIR}" + echo >&2 "could not create BUILDDIR ${BUILDDIR}" exit 2 fi From nils.goroll at uplex.de Wed Dec 7 13:06:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 14:06:04 +0100 Subject: [master] f618626 out-of-tree build support: git commands Message-ID: commit f618626d61bd3c1578e0f2a901a18d4c51a580ef Author: Nils Goroll Date: Wed Dec 7 14:04:27 2016 +0100 out-of-tree build support: git commands diff --git a/include/Makefile.am b/include/Makefile.am index f3dfe09..0bf9cec 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -112,8 +112,8 @@ BUILT_SOURCES = vcs_version.h vmod_abi.h MAINTAINERCLEANFILES = vcs_version.h vcs_version.h: FORCE @if [ -d "$(top_srcdir)/.git" ]; then \ - V="$$(git show -s --pretty=format:%h)" \ - B="$$(git rev-parse --abbrev-ref HEAD)" \ + V="$$(git --git-dir=$(top_srcdir)/.git show -s --pretty=format:%h)" \ + B="$$(git --git-dir=$(top_srcdir)/.git rev-parse --abbrev-ref HEAD)" \ H="$$(head -n 1 vcs_version.h 2>/dev/null || true)"; \ if [ "/* $$V */" != "$$H" ]; then \ ( \ From hermunn at varnish-software.com Wed Dec 7 14:01:04 2016 From: hermunn at varnish-software.com (Pål Hermunn Johansen) Date: Wed, 07 Dec 2016 15:01:04 +0100 Subject: [4.1] d8810a8 Whitespace after colon is optional Message-ID: commit d8810a875ca5d03bb46952cde914817c352b2114 Author: Federico G. Schwindt Date: Sun Nov 27 21:21:05 2016 +0000 Whitespace after colon is optional Fixes #2148. diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c index bf41276..1e8fa3a 100644 --- a/bin/varnishncsa/varnishncsa.c +++ b/bin/varnishncsa/varnishncsa.c @@ -803,12 +803,12 @@ static int isprefix(const char *str, const char *prefix, const char *end, const char **next) { + size_t len; - while (str < end && *str && *prefix && - tolower((int)*str) == tolower((int)*prefix)) - ++str, ++prefix; - if (*str && *str != ' ') + len = strlen(prefix); + if (end - str < len || strncasecmp(str, prefix, len)) return (0); + str += len; if (next) { while (str < end && *str && *str == ' ') ++str; @@ -1010,7 +1010,7 @@ dispatch_f(struct VSL_data *vsl, struct VSL_transaction * const pt[], if (isprefix(b, "Host:", e, &p)) frag_line(0, p, e, &CTX.frag[F_host]); else if (isprefix(b, "Authorization:", e, &p) && - isprefix(p, "basic", e, &p)) + isprefix(p, "basic ", e, &p)) frag_line(0, p, e, &CTX.frag[F_auth]); break; case (SLT_VCL_call + BACKEND_MARKER): diff --git a/bin/varnishtest/tests/r02148.vtc b/bin/varnishtest/tests/r02148.vtc new file mode 100644 index 0000000..9654b39 --- /dev/null +++ b/bin/varnishtest/tests/r02148.vtc @@ -0,0 +1,18 @@ +varnishtest "Whitespace after colon is optional" + +server s1 { + rxreq + txresp +} -start + +varnish v1 -vcl+backend {} -start + +client c1 { + txreq -hdr "Host:qux" -hdr "Authorization:Basic Zm9vOmJhcg==" + rxresp +} -run + +process p1 {varnishncsa -d -n ${v1_name} -F "%u %{Host}i"} -run +shell {grep -q "foo qux" ${tmpdir}/p1/stdout} +process p2 {varnishncsa -d -n ${v1_name} -F "%r"} -run +shell {grep -q "GET http://qux/ HTTP/1.1" ${tmpdir}/p2/stdout} From nils.goroll at uplex.de Wed Dec 7 14:31:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 15:31:05 +0100 Subject: [master] 4a68ee5 avoid hardlinking in case srcdir and builddir are on different filesystems Message-ID: commit 4a68ee59f7ea39762a4b4358715d6c85e1a5bc85 Author: Nils Goroll Date: Wed Dec 7 14:37:55 2016 +0100 avoid hardlinking in case srcdir and builddir are on different filesystems diff --git a/doc/graphviz/Makefile.am b/doc/graphviz/Makefile.am index 233783c..f135000 100644 --- a/doc/graphviz/Makefile.am +++ b/doc/graphviz/Makefile.am @@ -12,7 +12,7 @@ link_srcdir: test ! -f $(builddir)/cache_http1_fsm.svg ; then \ d=`pwd`/$(builddir) ; \ cd $(srcdir) && find . -name \*.svg -type f | \ - cpio -ldmp $${d} || true ; \ + cpio -dmp $${d} || true ; \ fi dist-hook: diff --git a/doc/sphinx/Makefile.am b/doc/sphinx/Makefile.am index 424ebb7..9001cb8 100644 --- a/doc/sphinx/Makefile.am +++ b/doc/sphinx/Makefile.am @@ -32,7 +32,7 @@ clean: link_srcdir: if test "x$(srcdir)" != "x$(builddir)" && test ! -f index.rst ; then \ d=`pwd`/$(builddir) ; \ - cd $(srcdir) && find . -type f | cpio -ldmp $${d} || true ; \ + cd $(srcdir) && find . -type f | cpio -dmp $${d} || true ; \ fi # work around for make html called within doc/sphinx From nils.goroll at uplex.de Wed Dec 7 14:31:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 15:31:05 +0100 Subject: [master] e221c0c link to builddir for make target "all" so make in man/ finds all files in place Message-ID: commit e221c0c54928f5ec116b3df2ce89b24cf00787c9 Author: Nils Goroll Date: Wed Dec 7 15:13:06 2016 +0100 link to builddir for make target "all" so make in man/ finds all files in place diff --git a/doc/sphinx/Makefile.am b/doc/sphinx/Makefile.am index 9001cb8..6c28f54 100644 --- a/doc/sphinx/Makefile.am +++ b/doc/sphinx/Makefile.am @@ -42,6 +42,8 @@ graphviz: sphinx_prereq: link_srcdir graphviz conf.py +all: link_srcdir + html: sphinx_prereq $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo From nils.goroll at uplex.de Wed Dec 7 14:31:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 15:31:05 +0100 Subject: [master] 531ecb4 run all the rst processing in builddir to fix out-of-tree builds Message-ID: commit 531ecb40733d3df41007784d7039f0fe9adb0150 Author: Nils Goroll Date: Wed Dec 7 15:13:55 2016 +0100 run all the rst processing in builddir to fix out-of-tree builds I am not entirely happy about this and we should try to find a better solution to this chicken-egg-ish situation: - part of our documentation is hand-written (in git/srcdir), part is auto- generated - because we add generated rsts to the dist, they are not in srcdir when building from git, but they are when building from a dist (tarball) - sphinx wants all files in one doctree - there seems to be no include path I tend to lean towards removing generated rsts from the dist to unify the src tree for git vs. dist builds, but I'd like to avoid too much change at this point due to other priorities. diff --git a/doc/sphinx/Makefile.am b/doc/sphinx/Makefile.am index 6c28f54..d00c566 100644 --- a/doc/sphinx/Makefile.am +++ b/doc/sphinx/Makefile.am @@ -194,11 +194,11 @@ reference: BUILT_SOURCES += reference reference/vmod_std.generated.rst: reference $(top_builddir)/lib/libvmod_std/vmod_std.rst - cp $(top_builddir)/lib/libvmod_std/vmod_std.rst $@ + cp $(top_builddir)/lib/libvmod_std/vmod_std.rst $@ || true BUILT_SOURCES += reference/vmod_std.generated.rst reference/vmod_directors.generated.rst: reference $(top_builddir)/lib/libvmod_directors/vmod_directors.rst - cp $(top_builddir)/lib/libvmod_directors/vmod_directors.rst $@ + cp $(top_builddir)/lib/libvmod_directors/vmod_directors.rst $@ || true BUILT_SOURCES += reference/vmod_directors.generated.rst EXTRA_DIST += $(BUILT_SOURCES) diff --git a/man/Makefile.am b/man/Makefile.am index da9b405..2b61fbb 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -22,66 +22,66 @@ CLEANFILES = $(dist_man_MANS) RST2ANY_FLAGS = --halt=2 -varnish-cli.7: $(top_srcdir)/doc/sphinx/reference/varnish-cli.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnish-cli.rst $@ +varnish-cli.7: $(top_builddir)/doc/sphinx/reference/varnish-cli.rst + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnish-cli.rst $@ -varnish-counters.7: $(top_srcdir)/doc/sphinx/reference/varnish-counters.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnish-counters.rst $@ +varnish-counters.7: $(top_builddir)/doc/sphinx/reference/varnish-counters.rst + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnish-counters.rst $@ -vcl.7: $(top_srcdir)/doc/sphinx/reference/vcl.rst \ - $(top_srcdir)/bin/varnishd/builtin.vcl - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/vcl.rst $@ +vcl.7: $(top_builddir)/doc/sphinx/reference/vcl.rst \ + $(top_builddir)/bin/varnishd/builtin.vcl + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/vcl.rst $@ -vsl.7: $(top_srcdir)/doc/sphinx/reference/vsl.rst \ +vsl.7: $(top_builddir)/doc/sphinx/reference/vsl.rst \ $(top_builddir)/doc/sphinx/include/vsl-tags.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/vsl.rst $@ + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/vsl.rst $@ -vsl-query.7: $(top_srcdir)/doc/sphinx/reference/vsl-query.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/vsl-query.rst $@ +vsl-query.7: $(top_builddir)/doc/sphinx/reference/vsl-query.rst + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/vsl-query.rst $@ -varnishadm.1: $(top_srcdir)/doc/sphinx/reference/varnishadm.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishadm.rst $@ +varnishadm.1: $(top_builddir)/doc/sphinx/reference/varnishadm.rst + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishadm.rst $@ varnishd.1: \ - $(top_srcdir)/doc/sphinx/reference/varnishd.rst \ + $(top_builddir)/doc/sphinx/reference/varnishd.rst \ $(top_builddir)/doc/sphinx/include/params.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishd.rst $@ + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishd.rst $@ varnishncsa.1: \ - $(top_srcdir)/doc/sphinx/reference/varnishncsa.rst \ + $(top_builddir)/doc/sphinx/reference/varnishncsa.rst \ $(top_builddir)/doc/sphinx/include/varnishncsa_options.rst \ $(top_builddir)/doc/sphinx/include/varnishncsa_synopsis.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishncsa.rst $@ + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishncsa.rst $@ varnishlog.1: \ - $(top_srcdir)/doc/sphinx/reference/varnishlog.rst \ + $(top_builddir)/doc/sphinx/reference/varnishlog.rst \ $(top_builddir)/doc/sphinx/include/varnishlog_options.rst \ $(top_builddir)/doc/sphinx/include/varnishlog_synopsis.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishlog.rst $@ + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishlog.rst $@ -varnishstat.1: $(top_srcdir)/doc/sphinx/reference/varnishstat.rst \ +varnishstat.1: $(top_builddir)/doc/sphinx/reference/varnishstat.rst \ $(top_builddir)/doc/sphinx/include/varnishstat_options.rst \ $(top_builddir)/doc/sphinx/include/varnishstat_synopsis.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishstat.rst $@ + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishstat.rst $@ -varnishtest.1: $(top_srcdir)/doc/sphinx/reference/varnishtest.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishtest.rst $@ +varnishtest.1: $(top_builddir)/doc/sphinx/reference/varnishtest.rst + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishtest.rst $@ -vtc.7: $(top_srcdir)/doc/sphinx/reference/vtc.rst \ - $(top_srcdir)/doc/sphinx/include/vtc-syntax.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/vtc.rst $@ +vtc.7: $(top_builddir)/doc/sphinx/reference/vtc.rst \ + $(top_builddir)/doc/sphinx/include/vtc-syntax.rst + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/vtc.rst $@ varnishtop.1: \ - $(top_srcdir)/doc/sphinx/reference/varnishtop.rst \ + $(top_builddir)/doc/sphinx/reference/varnishtop.rst \ $(top_builddir)/doc/sphinx/include/varnishtop_options.rst \ $(top_builddir)/doc/sphinx/include/varnishtop_synopsis.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishtop.rst $@ + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishtop.rst $@ varnishhist.1: \ - $(top_srcdir)/doc/sphinx/reference/varnishhist.rst \ + $(top_builddir)/doc/sphinx/reference/varnishhist.rst \ $(top_builddir)/doc/sphinx/include/varnishhist_options.rst \ $(top_builddir)/doc/sphinx/include/varnishhist_synopsis.rst - ${RST2MAN} $(RST2ANY_FLAGS) $(top_srcdir)/doc/sphinx/reference/varnishhist.rst $@ + ${RST2MAN} $(RST2ANY_FLAGS) $(top_builddir)/doc/sphinx/reference/varnishhist.rst $@ vmod_std.3: $(top_builddir)/lib/libvmod_std/vmod_std.man.rst ${RST2MAN} $(RST2ANY_FLAGS) $? $@ From nils.goroll at uplex.de Wed Dec 7 14:39:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 15:39:05 +0100 Subject: [master] d1182bb printf as the portable echo -n Message-ID: commit d1182bb130e97b0fb01c2935b791b6c1d2892f70 Author: Nils Goroll Date: Wed Dec 7 15:37:56 2016 +0100 printf as the portable echo -n diff --git a/tools/vtest.sh b/tools/vtest.sh index 4aed61a..b284e35 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -79,7 +79,7 @@ makedistcheck () ( failedtests () ( for t in `grep '^FAIL: tests/' ${1} | sort -u | sed 's/.* //'` do - /bin/echo -n "VTCGITREV ${t} " + printf "VTCGITREV ${t} " ( cd varnish-cache/bin/varnishtest/ git log -n 1 ${t} | head -1 From dridi.boukelmoune at gmail.com Wed Dec 7 14:56:05 2016 From: dridi.boukelmoune at gmail.com (Dridi Boukelmoune) Date: Wed, 07 Dec 2016 15:56:05 +0100 Subject: [master] f572337 Safer printf usage Message-ID: commit f57233760788c91a287584305ae296885878d65b Author: Dridi Boukelmoune Date: Wed Dec 7 15:55:15 2016 +0100 Safer printf usage diff --git a/tools/vtest.sh b/tools/vtest.sh index b284e35..6e1d8ca 100755 --- a/tools/vtest.sh +++ b/tools/vtest.sh @@ -79,7 +79,7 @@ makedistcheck () ( failedtests () ( for t in `grep '^FAIL: tests/' ${1} | sort -u | sed 's/.* //'` do - printf "VTCGITREV ${t} " + printf 'VTCGITREV %s ' "${t}" ( cd varnish-cache/bin/varnishtest/ git log -n 1 ${t} | head -1 From hermunn at varnish-software.com Wed Dec 7 16:00:07 2016 From: hermunn at varnish-software.com (Pål Hermunn Johansen) Date: Wed, 07 Dec 2016 17:00:07 +0100 Subject: [4.1] 57eb0f1 Unbreak test from incomplete backport Message-ID: commit 57eb0f172fb97c47e52045c1bb96c4f3f6259554 Author: P?l Hermunn Johansen Date: Wed Dec 7 16:56:56 2016 +0100 Unbreak test from incomplete backport The previous commit was not a good backport, as I did not check the new test case. Now the test case has been updated, and everything should work. diff --git a/bin/varnishtest/tests/r02148.vtc b/bin/varnishtest/tests/r02148.vtc index 9654b39..d90b2bb 100644 --- a/bin/varnishtest/tests/r02148.vtc +++ b/bin/varnishtest/tests/r02148.vtc @@ -12,7 +12,9 @@ client c1 { rxresp } -run -process p1 {varnishncsa -d -n ${v1_name} -F "%u %{Host}i"} -run +process p1 {varnishncsa -d -n ${v1_name} -F "%u %{Host}i"} -start +process p1 -wait shell {grep -q "foo qux" ${tmpdir}/p1/stdout} -process p2 {varnishncsa -d -n ${v1_name} -F "%r"} -run +process p2 {varnishncsa -d -n ${v1_name} -F "%r"} -start +process p2 -wait shell {grep -q "GET http://qux/ HTTP/1.1" ${tmpdir}/p2/stdout} From nils.goroll at uplex.de Wed Dec 7 20:02:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 07 Dec 2016 21:02:05 +0100 Subject: [master] 7fb8751 address a specific issue on solaris with gcc -m32 -fstack-protector Message-ID: commit 7fb87518495328df82819f6504b76323362cd12a Author: Nils Goroll Date: Wed Dec 7 20:43:04 2016 +0100 address a specific issue on solaris with gcc -m32 -fstack-protector To avoid an undefined symbol __stack_chk_fail_local due to compiling and linking gcc not seeing the same flags, we need to trick libtool into passing a flag it would otherwise remove. Please hold your whitespace ocds and exclude the non-standard indent chosen to avoid excessive line length. diff --git a/configure.ac b/configure.ac index 9400c09..094f7e6 100644 --- a/configure.ac +++ b/configure.ac @@ -605,6 +605,23 @@ if test "x$enable_developer_warnings" != "xno"; then OCFLAGS="${OCFLAGS} ${DEVELOPER_CFLAGS}" fi +# gcc on solaris needs -fstack-protector when calling gcc in linker +# mode but libtool does not pass it on, so we need to trick it +# specifically +case $CFLAGS in + *-fstack-protector*) + case $target in + *-*-solaris*) + case $CC in + gcc*) + AM_LT_LDFLAGS="${AM_LT_LDFLAGS} -Wc,-fstack-protector" + ;; + esac + ;; + esac + ;; +esac + # --enable-debugging-symbols AC_ARG_ENABLE(debugging-symbols, AS_HELP_STRING([--enable-debugging-symbols],[enable debugging symbols (default is NO)]), From hermunn at varnish-software.com Thu Dec 8 09:25:05 2016 From: hermunn at varnish-software.com (Pål Hermunn Johansen) Date: Thu, 08 Dec 2016 10:25:05 +0100 Subject: [4.1] 72435ed Disable Nagle's algorithm on the backend as well Message-ID: commit 72435ed0e9aa6c0e46f88e95f37af1ceb9e0bba0 Author: Federico G. Schwindt Date: Sat Nov 19 23:29:22 2016 +0000 Disable Nagle's algorithm on the backend as well Fixes #2134. diff --git a/lib/libvarnish/vtcp.c b/lib/libvarnish/vtcp.c index 83e33b4..62a9fb6 100644 --- a/lib/libvarnish/vtcp.c +++ b/lib/libvarnish/vtcp.c @@ -279,6 +279,7 @@ VTCP_connect(const struct suckaddr *name, int msec) struct pollfd fds[1]; const struct sockaddr *sa; socklen_t sl; + int val; if (name == NULL) return (-1); @@ -296,6 +297,9 @@ VTCP_connect(const struct suckaddr *name, int msec) if (msec != 0) (void)VTCP_nonblocking(s); + val = 1; + AZ(setsockopt(s, IPPROTO_TCP, TCP_NODELAY, &val, sizeof val)); + i = connect(s, sa, sl); if (i == 0) return (s); From phk at FreeBSD.org Thu Dec 8 10:01:06 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Thu, 08 Dec 2016 11:01:06 +0100 Subject: [master] ac517cb Emit a rudimentary symbol table at the end of the emitted C-code Message-ID: commit ac517cb9560f7cf87633adb67f843f1656067888 Author: Poul-Henning Kamp Date: Thu Dec 8 09:25:31 2016 +0000 Emit a rudimentary symbol table at the end of the emitted C-code diff --git a/lib/libvcc/vcc_compile.c b/lib/libvcc/vcc_compile.c index b2b6cab..e350c95 100644 --- a/lib/libvcc/vcc_compile.c +++ b/lib/libvcc/vcc_compile.c @@ -669,6 +669,8 @@ vcc_CompileSource(struct vcc *tl, struct source *sp) EmitStruct(tl); + VCC_XrefTable(tl); + /* Combine it all */ vsb = VSB_new_auto(); diff --git a/lib/libvcc/vcc_compile.h b/lib/libvcc/vcc_compile.h index 65e7de7..008c9bb 100644 --- a/lib/libvcc/vcc_compile.h +++ b/lib/libvcc/vcc_compile.h @@ -121,6 +121,7 @@ struct symbol { VTAILQ_ENTRY(symbol) list; VTAILQ_HEAD(,symbol) children; + struct symbol *parent; const char *vmod; char *name; @@ -346,6 +347,7 @@ void vcc_ParseNew(struct vcc *tl); int vcc_AddDef(struct vcc *tl, const struct token *t, enum symkind type); void vcc_AddRef(struct vcc *tl, const struct token *t, enum symkind type); int vcc_CheckReferences(struct vcc *tl); +void VCC_XrefTable(struct vcc *); void vcc_AddCall(struct vcc *tl, struct token *t); struct proc *vcc_AddProc(struct vcc *tl, struct token *t); diff --git a/lib/libvcc/vcc_symb.c b/lib/libvcc/vcc_symb.c index 03b069f..14831b8 100644 --- a/lib/libvcc/vcc_symb.c +++ b/lib/libvcc/vcc_symb.c @@ -144,6 +144,7 @@ VCC_Symbol(struct vcc *tl, struct symbol *parent, return (sym); if (sym == NULL) { sym = vcc_new_symbol(tl, b, q); + sym->parent = parent; if (sym2 != NULL) VTAILQ_INSERT_BEFORE(sym2, sym, list); else diff --git a/lib/libvcc/vcc_xref.c b/lib/libvcc/vcc_xref.c index 8a75c25..d492cc6 100644 --- a/lib/libvcc/vcc_xref.c +++ b/lib/libvcc/vcc_xref.c @@ -392,3 +392,37 @@ vcc_CheckUses(struct vcc *tl) VCC_WalkSymbols(tl, vcc_checkuses, SYM_SUB); return (tl->err); } + +/*---------------------------------------------------------------------*/ + +static void +vcc_pnam(struct vcc *tl, const struct symbol *sym) +{ + + if (sym->parent != tl->symbols) { + vcc_pnam(tl, sym->parent); + Fc(tl, 0, "."); + } + Fc(tl, 0, "%s", sym->name); +} + +static void __match_proto__(symwalk_f) +vcc_xreftable(struct vcc *tl, const struct symbol *sym) +{ + + Fc(tl, 0, " * %-7s ", VCC_SymKind(tl, sym)); + Fc(tl, 0, " %-9s ", sym->fmt != NULL ? sym->fmt->name : ""); + vcc_pnam(tl, sym); + if (sym->wildcard != NULL) + Fc(tl, 0, "*"); + Fc(tl, 0, "\n"); +} + +void +VCC_XrefTable(struct vcc *tl) +{ + + Fc(tl, 0, "\n/*\n * Symbol Table\n *\n"); + VCC_WalkSymbols(tl, vcc_xreftable, SYM_NONE); + Fc(tl, 0, "*/\n\n"); +} From guillaume at varnish-software.com Thu Dec 8 11:17:04 2016 From: guillaume at varnish-software.com (Guillaume Quintard) Date: Thu, 08 Dec 2016 12:17:04 +0100 Subject: [master] bc2ba0a Remove flex arrays Message-ID: commit bc2ba0a07791d1ae7d64d999187f5d3422d44ddb Author: Guillaume Quintard Date: Thu Dec 8 11:33:18 2016 +0100 Remove flex arrays diff --git a/bin/varnishtest/vtc_h2_dectbl.h b/bin/varnishtest/vtc_h2_dectbl.h index 03a2d73..7c72700 100644 --- a/bin/varnishtest/vtc_h2_dectbl.h +++ b/bin/varnishtest/vtc_h2_dectbl.h @@ -8,1021 +8,1049 @@ struct ssym { struct stbl { int msk; - struct ssym syms[]; + struct ssym *syms; +}; + +static struct ssym byte3_pref0110_array[] = { + /* idx 0 */ {1, 199, NULL}, + /* idx 1 */ {1, 207, NULL}, }; static struct stbl byte3_pref0110 = { 1, - { - /* idx 0 */ {1, 199, NULL}, - /* idx 1 */ {1, 207, NULL}, - } + byte3_pref0110_array +}; + +static struct ssym byte3_pref0111_array[] = { + /* idx 0 */ {1, 234, NULL}, + /* idx 1 */ {1, 235, NULL}, }; static struct stbl byte3_pref0111 = { 1, - { - /* idx 0 */ {1, 234, NULL}, - /* idx 1 */ {1, 235, NULL}, - } + byte3_pref0111_array +}; + +static struct ssym byte3_pref1000_array[] = { + /* idx 0 */ {2, 192, NULL}, + /* idx 1 */ {2, 193, NULL}, + /* idx 2 */ {2, 200, NULL}, + /* idx 3 */ {2, 201, NULL}, }; static struct stbl byte3_pref1000 = { 2, - { - /* idx 0 */ {2, 192, NULL}, - /* idx 1 */ {2, 193, NULL}, - /* idx 2 */ {2, 200, NULL}, - /* idx 3 */ {2, 201, NULL}, - } + byte3_pref1000_array +}; + +static struct ssym byte3_pref1001_array[] = { + /* idx 0 */ {2, 202, NULL}, + /* idx 1 */ {2, 205, NULL}, + /* idx 2 */ {2, 210, NULL}, + /* idx 3 */ {2, 213, NULL}, }; static struct stbl byte3_pref1001 = { 2, - { - /* idx 0 */ {2, 202, NULL}, - /* idx 1 */ {2, 205, NULL}, - /* idx 2 */ {2, 210, NULL}, - /* idx 3 */ {2, 213, NULL}, - } + byte3_pref1001_array +}; + +static struct ssym byte3_pref1010_array[] = { + /* idx 0 */ {2, 218, NULL}, + /* idx 1 */ {2, 219, NULL}, + /* idx 2 */ {2, 238, NULL}, + /* idx 3 */ {2, 240, NULL}, }; static struct stbl byte3_pref1010 = { 2, - { - /* idx 0 */ {2, 218, NULL}, - /* idx 1 */ {2, 219, NULL}, - /* idx 2 */ {2, 238, NULL}, - /* idx 3 */ {2, 240, NULL}, - } + byte3_pref1010_array +}; + +static struct ssym byte3_pref1011_array[] = { + /* idx 0 */ {2, 242, NULL}, + /* idx 1 */ {2, 242, NULL}, + /* idx 2 */ {2, 243, NULL}, + /* idx 3 */ {2, 243, NULL}, + /* idx 4 */ {2, 255, NULL}, + /* idx 5 */ {2, 255, NULL}, + /* idx 6 */ {3, 203, NULL}, + /* idx 7 */ {3, 204, NULL}, }; static struct stbl byte3_pref1011 = { 3, - { - /* idx 0 */ {2, 242, NULL}, - /* idx 1 */ {2, 242, NULL}, - /* idx 2 */ {2, 243, NULL}, - /* idx 3 */ {2, 243, NULL}, - /* idx 4 */ {2, 255, NULL}, - /* idx 5 */ {2, 255, NULL}, - /* idx 6 */ {3, 203, NULL}, - /* idx 7 */ {3, 204, NULL}, - } + byte3_pref1011_array +}; + +static struct ssym byte3_pref1100_array[] = { + /* idx 0 */ {3, 211, NULL}, + /* idx 1 */ {3, 212, NULL}, + /* idx 2 */ {3, 214, NULL}, + /* idx 3 */ {3, 221, NULL}, + /* idx 4 */ {3, 222, NULL}, + /* idx 5 */ {3, 223, NULL}, + /* idx 6 */ {3, 241, NULL}, + /* idx 7 */ {3, 244, NULL}, }; static struct stbl byte3_pref1100 = { 3, - { - /* idx 0 */ {3, 211, NULL}, - /* idx 1 */ {3, 212, NULL}, - /* idx 2 */ {3, 214, NULL}, - /* idx 3 */ {3, 221, NULL}, - /* idx 4 */ {3, 222, NULL}, - /* idx 5 */ {3, 223, NULL}, - /* idx 6 */ {3, 241, NULL}, - /* idx 7 */ {3, 244, NULL}, - } + byte3_pref1100_array +}; + +static struct ssym byte3_pref1101_array[] = { + /* idx 0 */ {3, 245, NULL}, + /* idx 1 */ {3, 246, NULL}, + /* idx 2 */ {3, 247, NULL}, + /* idx 3 */ {3, 248, NULL}, + /* idx 4 */ {3, 250, NULL}, + /* idx 5 */ {3, 251, NULL}, + /* idx 6 */ {3, 252, NULL}, + /* idx 7 */ {3, 253, NULL}, }; static struct stbl byte3_pref1101 = { 3, - { - /* idx 0 */ {3, 245, NULL}, - /* idx 1 */ {3, 246, NULL}, - /* idx 2 */ {3, 247, NULL}, - /* idx 3 */ {3, 248, NULL}, - /* idx 4 */ {3, 250, NULL}, - /* idx 5 */ {3, 251, NULL}, - /* idx 6 */ {3, 252, NULL}, - /* idx 7 */ {3, 253, NULL}, - } + byte3_pref1101_array +}; + +static struct ssym byte3_pref1110_array[] = { + /* idx 0 */ {3, 254, NULL}, + /* idx 1 */ {3, 254, NULL}, + /* idx 2 */ {4, 2, NULL}, + /* idx 3 */ {4, 3, NULL}, + /* idx 4 */ {4, 4, NULL}, + /* idx 5 */ {4, 5, NULL}, + /* idx 6 */ {4, 6, NULL}, + /* idx 7 */ {4, 7, NULL}, + /* idx 8 */ {4, 8, NULL}, + /* idx 9 */ {4, 11, NULL}, + /* idx 10 */ {4, 12, NULL}, + /* idx 11 */ {4, 14, NULL}, + /* idx 12 */ {4, 15, NULL}, + /* idx 13 */ {4, 16, NULL}, + /* idx 14 */ {4, 17, NULL}, + /* idx 15 */ {4, 18, NULL}, }; static struct stbl byte3_pref1110 = { 4, - { - /* idx 0 */ {3, 254, NULL}, - /* idx 1 */ {3, 254, NULL}, - /* idx 2 */ {4, 2, NULL}, - /* idx 3 */ {4, 3, NULL}, - /* idx 4 */ {4, 4, NULL}, - /* idx 5 */ {4, 5, NULL}, - /* idx 6 */ {4, 6, NULL}, - /* idx 7 */ {4, 7, NULL}, - /* idx 8 */ {4, 8, NULL}, - /* idx 9 */ {4, 11, NULL}, - /* idx 10 */ {4, 12, NULL}, - /* idx 11 */ {4, 14, NULL}, - /* idx 12 */ {4, 15, NULL}, - /* idx 13 */ {4, 16, NULL}, - /* idx 14 */ {4, 17, NULL}, - /* idx 15 */ {4, 18, NULL}, - } + byte3_pref1110_array +}; + +static struct ssym byte3_pref1111_array[] = { + /* idx 0 */ {4, 19, NULL}, + /* idx 1 */ {4, 19, NULL}, + /* idx 2 */ {4, 19, NULL}, + /* idx 3 */ {4, 19, NULL}, + /* idx 4 */ {4, 20, NULL}, + /* idx 5 */ {4, 20, NULL}, + /* idx 6 */ {4, 20, NULL}, + /* idx 7 */ {4, 20, NULL}, + /* idx 8 */ {4, 21, NULL}, + /* idx 9 */ {4, 21, NULL}, + /* idx 10 */ {4, 21, NULL}, + /* idx 11 */ {4, 21, NULL}, + /* idx 12 */ {4, 23, NULL}, + /* idx 13 */ {4, 23, NULL}, + /* idx 14 */ {4, 23, NULL}, + /* idx 15 */ {4, 23, NULL}, + /* idx 16 */ {4, 24, NULL}, + /* idx 17 */ {4, 24, NULL}, + /* idx 18 */ {4, 24, NULL}, + /* idx 19 */ {4, 24, NULL}, + /* idx 20 */ {4, 25, NULL}, + /* idx 21 */ {4, 25, NULL}, + /* idx 22 */ {4, 25, NULL}, + /* idx 23 */ {4, 25, NULL}, + /* idx 24 */ {4, 26, NULL}, + /* idx 25 */ {4, 26, NULL}, + /* idx 26 */ {4, 26, NULL}, + /* idx 27 */ {4, 26, NULL}, + /* idx 28 */ {4, 27, NULL}, + /* idx 29 */ {4, 27, NULL}, + /* idx 30 */ {4, 27, NULL}, + /* idx 31 */ {4, 27, NULL}, + /* idx 32 */ {4, 28, NULL}, + /* idx 33 */ {4, 28, NULL}, + /* idx 34 */ {4, 28, NULL}, + /* idx 35 */ {4, 28, NULL}, + /* idx 36 */ {4, 29, NULL}, + /* idx 37 */ {4, 29, NULL}, + /* idx 38 */ {4, 29, NULL}, + /* idx 39 */ {4, 29, NULL}, + /* idx 40 */ {4, 30, NULL}, + /* idx 41 */ {4, 30, NULL}, + /* idx 42 */ {4, 30, NULL}, + /* idx 43 */ {4, 30, NULL}, + /* idx 44 */ {4, 31, NULL}, + /* idx 45 */ {4, 31, NULL}, + /* idx 46 */ {4, 31, NULL}, + /* idx 47 */ {4, 31, NULL}, + /* idx 48 */ {4, 127, NULL}, + /* idx 49 */ {4, 127, NULL}, + /* idx 50 */ {4, 127, NULL}, + /* idx 51 */ {4, 127, NULL}, + /* idx 52 */ {4, 220, NULL}, + /* idx 53 */ {4, 220, NULL}, + /* idx 54 */ {4, 220, NULL}, + /* idx 55 */ {4, 220, NULL}, + /* idx 56 */ {4, 249, NULL}, + /* idx 57 */ {4, 249, NULL}, + /* idx 58 */ {4, 249, NULL}, + /* idx 59 */ {4, 249, NULL}, + /* idx 60 */ {6, 10, NULL}, + /* idx 61 */ {6, 13, NULL}, + /* idx 62 */ {6, 22, NULL}, + /* idx 63 */ {0, 0, NULL} }; static struct stbl byte3_pref1111 = { 6, - { - /* idx 0 */ {4, 19, NULL}, - /* idx 1 */ {4, 19, NULL}, - /* idx 2 */ {4, 19, NULL}, - /* idx 3 */ {4, 19, NULL}, - /* idx 4 */ {4, 20, NULL}, - /* idx 5 */ {4, 20, NULL}, - /* idx 6 */ {4, 20, NULL}, - /* idx 7 */ {4, 20, NULL}, - /* idx 8 */ {4, 21, NULL}, - /* idx 9 */ {4, 21, NULL}, - /* idx 10 */ {4, 21, NULL}, - /* idx 11 */ {4, 21, NULL}, - /* idx 12 */ {4, 23, NULL}, - /* idx 13 */ {4, 23, NULL}, - /* idx 14 */ {4, 23, NULL}, - /* idx 15 */ {4, 23, NULL}, - /* idx 16 */ {4, 24, NULL}, - /* idx 17 */ {4, 24, NULL}, - /* idx 18 */ {4, 24, NULL}, - /* idx 19 */ {4, 24, NULL}, - /* idx 20 */ {4, 25, NULL}, - /* idx 21 */ {4, 25, NULL}, - /* idx 22 */ {4, 25, NULL}, - /* idx 23 */ {4, 25, NULL}, - /* idx 24 */ {4, 26, NULL}, - /* idx 25 */ {4, 26, NULL}, - /* idx 26 */ {4, 26, NULL}, - /* idx 27 */ {4, 26, NULL}, - /* idx 28 */ {4, 27, NULL}, - /* idx 29 */ {4, 27, NULL}, - /* idx 30 */ {4, 27, NULL}, - /* idx 31 */ {4, 27, NULL}, - /* idx 32 */ {4, 28, NULL}, - /* idx 33 */ {4, 28, NULL}, - /* idx 34 */ {4, 28, NULL}, - /* idx 35 */ {4, 28, NULL}, - /* idx 36 */ {4, 29, NULL}, - /* idx 37 */ {4, 29, NULL}, - /* idx 38 */ {4, 29, NULL}, - /* idx 39 */ {4, 29, NULL}, - /* idx 40 */ {4, 30, NULL}, - /* idx 41 */ {4, 30, NULL}, - /* idx 42 */ {4, 30, NULL}, - /* idx 43 */ {4, 30, NULL}, - /* idx 44 */ {4, 31, NULL}, - /* idx 45 */ {4, 31, NULL}, - /* idx 46 */ {4, 31, NULL}, - /* idx 47 */ {4, 31, NULL}, - /* idx 48 */ {4, 127, NULL}, - /* idx 49 */ {4, 127, NULL}, - /* idx 50 */ {4, 127, NULL}, - /* idx 51 */ {4, 127, NULL}, - /* idx 52 */ {4, 220, NULL}, - /* idx 53 */ {4, 220, NULL}, - /* idx 54 */ {4, 220, NULL}, - /* idx 55 */ {4, 220, NULL}, - /* idx 56 */ {4, 249, NULL}, - /* idx 57 */ {4, 249, NULL}, - /* idx 58 */ {4, 249, NULL}, - /* idx 59 */ {4, 249, NULL}, - /* idx 60 */ {6, 10, NULL}, - /* idx 61 */ {6, 13, NULL}, - /* idx 62 */ {6, 22, NULL}, - /* idx 63 */ {0, 0, NULL} - } + byte3_pref1111_array +}; + +static struct ssym byte2_pref0_array[] = { + /* idx 0 */ {3, 92, NULL}, /* '\' */ + /* idx 1 */ {3, 92, NULL}, /* '\' */ + /* idx 2 */ {3, 92, NULL}, /* '\' */ + /* idx 3 */ {3, 92, NULL}, /* '\' */ + /* idx 4 */ {3, 195, NULL}, /* . */ + /* idx 5 */ {3, 195, NULL}, /* . */ + /* idx 6 */ {3, 195, NULL}, /* . */ + /* idx 7 */ {3, 195, NULL}, /* . */ + /* idx 8 */ {3, 208, NULL}, /* . */ + /* idx 9 */ {3, 208, NULL}, /* . */ + /* idx 10 */ {3, 208, NULL}, /* . */ + /* idx 11 */ {3, 208, NULL}, /* . */ + /* idx 12 */ {4, 128, NULL}, /* . */ + /* idx 13 */ {4, 128, NULL}, /* . */ + /* idx 14 */ {4, 130, NULL}, /* . */ + /* idx 15 */ {4, 130, NULL}, /* . */ + /* idx 16 */ {4, 131, NULL}, /* . */ + /* idx 17 */ {4, 131, NULL}, /* . */ + /* idx 18 */ {4, 162, NULL}, /* . */ + /* idx 19 */ {4, 162, NULL}, /* . */ + /* idx 20 */ {4, 184, NULL}, /* . */ + /* idx 21 */ {4, 184, NULL}, /* . */ + /* idx 22 */ {4, 194, NULL}, /* . */ + /* idx 23 */ {4, 194, NULL}, /* . */ + /* idx 24 */ {4, 224, NULL}, /* . */ + /* idx 25 */ {4, 224, NULL}, /* . */ + /* idx 26 */ {4, 226, NULL}, /* . */ + /* idx 27 */ {4, 226, NULL}, /* . */ + /* idx 28 */ {5, 153, NULL}, /* . */ + /* idx 29 */ {5, 161, NULL}, /* . */ + /* idx 30 */ {5, 167, NULL}, /* . */ + /* idx 31 */ {5, 172, NULL} /* . */ }; static struct stbl byte2_pref0 = { 5, - { - /* idx 0 */ {3, 92, NULL}, /* '\' */ - /* idx 1 */ {3, 92, NULL}, /* '\' */ - /* idx 2 */ {3, 92, NULL}, /* '\' */ - /* idx 3 */ {3, 92, NULL}, /* '\' */ - /* idx 4 */ {3, 195, NULL}, /* . */ - /* idx 5 */ {3, 195, NULL}, /* . */ - /* idx 6 */ {3, 195, NULL}, /* . */ - /* idx 7 */ {3, 195, NULL}, /* . */ - /* idx 8 */ {3, 208, NULL}, /* . */ - /* idx 9 */ {3, 208, NULL}, /* . */ - /* idx 10 */ {3, 208, NULL}, /* . */ - /* idx 11 */ {3, 208, NULL}, /* . */ - /* idx 12 */ {4, 128, NULL}, /* . */ - /* idx 13 */ {4, 128, NULL}, /* . */ - /* idx 14 */ {4, 130, NULL}, /* . */ - /* idx 15 */ {4, 130, NULL}, /* . */ - /* idx 16 */ {4, 131, NULL}, /* . */ - /* idx 17 */ {4, 131, NULL}, /* . */ - /* idx 18 */ {4, 162, NULL}, /* . */ - /* idx 19 */ {4, 162, NULL}, /* . */ - /* idx 20 */ {4, 184, NULL}, /* . */ - /* idx 21 */ {4, 184, NULL}, /* . */ - /* idx 22 */ {4, 194, NULL}, /* . */ - /* idx 23 */ {4, 194, NULL}, /* . */ - /* idx 24 */ {4, 224, NULL}, /* . */ - /* idx 25 */ {4, 224, NULL}, /* . */ - /* idx 26 */ {4, 226, NULL}, /* . */ - /* idx 27 */ {4, 226, NULL}, /* . */ - /* idx 28 */ {5, 153, NULL}, /* . */ - /* idx 29 */ {5, 161, NULL}, /* . */ - /* idx 30 */ {5, 167, NULL}, /* . */ - /* idx 31 */ {5, 172, NULL} /* . */ - } + byte2_pref0_array +}; + +static struct ssym byte2_pref1_array[] = { + /* idx 0 */ {5, 176, NULL}, /* . */ + /* idx 1 */ {5, 176, NULL}, /* . */ + /* idx 2 */ {5, 176, NULL}, /* . */ + /* idx 3 */ {5, 176, NULL}, /* . */ + /* idx 4 */ {5, 176, NULL}, /* . */ + /* idx 5 */ {5, 176, NULL}, /* . */ + /* idx 6 */ {5, 176, NULL}, /* . */ + /* idx 7 */ {5, 176, NULL}, /* . */ + /* idx 8 */ {5, 177, NULL}, /* . */ + /* idx 9 */ {5, 177, NULL}, /* . */ + /* idx 10 */ {5, 177, NULL}, /* . */ + /* idx 11 */ {5, 177, NULL}, /* . */ + /* idx 12 */ {5, 177, NULL}, /* . */ + /* idx 13 */ {5, 177, NULL}, /* . */ + /* idx 14 */ {5, 177, NULL}, /* . */ + /* idx 15 */ {5, 177, NULL}, /* . */ + /* idx 16 */ {5, 179, NULL}, /* */ + /* idx 17 */ {5, 179, NULL}, /* */ + /* idx 18 */ {5, 179, NULL}, /* */ + /* idx 19 */ {5, 179, NULL}, /* */ + /* idx 20 */ {5, 179, NULL}, /* */ + /* idx 21 */ {5, 179, NULL}, /* */ + /* idx 22 */ {5, 179, NULL}, /* */ + /* idx 23 */ {5, 179, NULL}, /* */ + /* idx 24 */ {5, 209, NULL}, /* . */ + /* idx 25 */ {5, 209, NULL}, /* . */ + /* idx 26 */ {5, 209, NULL}, /* . */ + /* idx 27 */ {5, 209, NULL}, /* . */ + /* idx 28 */ {5, 209, NULL}, /* . */ + /* idx 29 */ {5, 209, NULL}, /* . */ + /* idx 30 */ {5, 209, NULL}, /* . */ + /* idx 31 */ {5, 209, NULL}, /* . */ + /* idx 32 */ {5, 216, NULL}, /* . */ + /* idx 33 */ {5, 216, NULL}, /* . */ + /* idx 34 */ {5, 216, NULL}, /* . */ + /* idx 35 */ {5, 216, NULL}, /* . */ + /* idx 36 */ {5, 216, NULL}, /* . */ + /* idx 37 */ {5, 216, NULL}, /* . */ + /* idx 38 */ {5, 216, NULL}, /* . */ + /* idx 39 */ {5, 216, NULL}, /* . */ + /* idx 40 */ {5, 217, NULL}, /* . */ + /* idx 41 */ {5, 217, NULL}, /* . */ + /* idx 42 */ {5, 217, NULL}, /* . */ + /* idx 43 */ {5, 217, NULL}, /* . */ + /* idx 44 */ {5, 217, NULL}, /* . */ + /* idx 45 */ {5, 217, NULL}, /* . */ + /* idx 46 */ {5, 217, NULL}, /* . */ + /* idx 47 */ {5, 217, NULL}, /* . */ + /* idx 48 */ {5, 227, NULL}, /* . */ + /* idx 49 */ {5, 227, NULL}, /* . */ + /* idx 50 */ {5, 227, NULL}, /* . */ + /* idx 51 */ {5, 227, NULL}, /* . */ + /* idx 52 */ {5, 227, NULL}, /* . */ + /* idx 53 */ {5, 227, NULL}, /* . */ + /* idx 54 */ {5, 227, NULL}, /* . */ + /* idx 55 */ {5, 227, NULL}, /* . */ + /* idx 56 */ {5, 229, NULL}, /* . */ + /* idx 57 */ {5, 229, NULL}, /* . */ + /* idx 58 */ {5, 229, NULL}, /* . */ + /* idx 59 */ {5, 229, NULL}, /* . */ + /* idx 60 */ {5, 229, NULL}, /* . */ + /* idx 61 */ {5, 229, NULL}, /* . */ + /* idx 62 */ {5, 229, NULL}, /* . */ + /* idx 63 */ {5, 229, NULL}, /* . */ + /* idx 64 */ {5, 230, NULL}, /* . */ + /* idx 65 */ {5, 230, NULL}, /* . */ + /* idx 66 */ {5, 230, NULL}, /* . */ + /* idx 67 */ {5, 230, NULL}, /* . */ + /* idx 68 */ {5, 230, NULL}, /* . */ + /* idx 69 */ {5, 230, NULL}, /* . */ + /* idx 70 */ {5, 230, NULL}, /* . */ + /* idx 71 */ {5, 230, NULL}, /* . */ + /* idx 72 */ {6, 129, NULL}, /* . */ + /* idx 73 */ {6, 129, NULL}, /* . */ + /* idx 74 */ {6, 129, NULL}, /* . */ + /* idx 75 */ {6, 129, NULL}, /* . */ + /* idx 76 */ {6, 132, NULL}, /* . */ + /* idx 77 */ {6, 132, NULL}, /* . */ + /* idx 78 */ {6, 132, NULL}, /* . */ + /* idx 79 */ {6, 132, NULL}, /* . */ + /* idx 80 */ {6, 133, NULL}, /* . */ + /* idx 81 */ {6, 133, NULL}, /* . */ + /* idx 82 */ {6, 133, NULL}, /* . */ + /* idx 83 */ {6, 133, NULL}, /* . */ + /* idx 84 */ {6, 134, NULL}, /* . */ + /* idx 85 */ {6, 134, NULL}, /* . */ + /* idx 86 */ {6, 134, NULL}, /* . */ + /* idx 87 */ {6, 134, NULL}, /* . */ + /* idx 88 */ {6, 136, NULL}, /* . */ + /* idx 89 */ {6, 136, NULL}, /* . */ + /* idx 90 */ {6, 136, NULL}, /* . */ + /* idx 91 */ {6, 136, NULL}, /* . */ + /* idx 92 */ {6, 146, NULL}, /* . */ + /* idx 93 */ {6, 146, NULL}, /* . */ + /* idx 94 */ {6, 146, NULL}, /* . */ + /* idx 95 */ {6, 146, NULL}, /* . */ + /* idx 96 */ {6, 154, NULL}, /* . */ + /* idx 97 */ {6, 154, NULL}, /* . */ + /* idx 98 */ {6, 154, NULL}, /* . */ + /* idx 99 */ {6, 154, NULL}, /* . */ + /* idx 100 */ {6, 156, NULL}, /* . */ + /* idx 101 */ {6, 156, NULL}, /* . */ + /* idx 102 */ {6, 156, NULL}, /* . */ + /* idx 103 */ {6, 156, NULL}, /* . */ + /* idx 104 */ {6, 160, NULL}, /* . */ + /* idx 105 */ {6, 160, NULL}, /* . */ + /* idx 106 */ {6, 160, NULL}, /* . */ + /* idx 107 */ {6, 160, NULL}, /* . */ + /* idx 108 */ {6, 163, NULL}, /* . */ + /* idx 109 */ {6, 163, NULL}, /* . */ + /* idx 110 */ {6, 163, NULL}, /* . */ + /* idx 111 */ {6, 163, NULL}, /* . */ + /* idx 112 */ {6, 164, NULL}, /* . */ + /* idx 113 */ {6, 164, NULL}, /* . */ + /* idx 114 */ {6, 164, NULL}, /* . */ + /* idx 115 */ {6, 164, NULL}, /* . */ + /* idx 116 */ {6, 169, NULL}, /* . */ + /* idx 117 */ {6, 169, NULL}, /* . */ + /* idx 118 */ {6, 169, NULL}, /* . */ + /* idx 119 */ {6, 169, NULL}, /* . */ + /* idx 120 */ {6, 170, NULL}, /* . */ + /* idx 121 */ {6, 170, NULL}, /* . */ + /* idx 122 */ {6, 170, NULL}, /* . */ + /* idx 123 */ {6, 170, NULL}, /* . */ + /* idx 124 */ {6, 173, NULL}, /* . */ + /* idx 125 */ {6, 173, NULL}, /* . */ + /* idx 126 */ {6, 173, NULL}, /* . */ + /* idx 127 */ {6, 173, NULL}, /* . */ + /* idx 128 */ {6, 176, NULL}, /* . */ + /* idx 129 */ {6, 176, NULL}, /* . */ + /* idx 130 */ {6, 176, NULL}, /* . */ + /* idx 131 */ {6, 176, NULL}, /* . */ + /* idx 132 */ {6, 181, NULL}, /* . */ + /* idx 133 */ {6, 181, NULL}, /* . */ + /* idx 134 */ {6, 181, NULL}, /* . */ + /* idx 135 */ {6, 181, NULL}, /* . */ + /* idx 136 */ {6, 185, NULL}, /* . */ + /* idx 137 */ {6, 185, NULL}, /* . */ + /* idx 138 */ {6, 185, NULL}, /* . */ + /* idx 139 */ {6, 185, NULL}, /* . */ + /* idx 140 */ {6, 186, NULL}, /* . */ + /* idx 141 */ {6, 186, NULL}, /* . */ + /* idx 142 */ {6, 186, NULL}, /* . */ + /* idx 143 */ {6, 186, NULL}, /* . */ + /* idx 144 */ {6, 187, NULL}, /* . */ + /* idx 145 */ {6, 187, NULL}, /* . */ + /* idx 146 */ {6, 187, NULL}, /* . */ + /* idx 147 */ {6, 187, NULL}, /* . */ + /* idx 148 */ {6, 189, NULL}, /* . */ + /* idx 149 */ {6, 189, NULL}, /* . */ + /* idx 150 */ {6, 189, NULL}, /* . */ + /* idx 151 */ {6, 189, NULL}, /* . */ + /* idx 152 */ {6, 190, NULL}, /* . */ + /* idx 153 */ {6, 190, NULL}, /* . */ + /* idx 154 */ {6, 190, NULL}, /* . */ + /* idx 155 */ {6, 190, NULL}, /* . */ + /* idx 156 */ {6, 196, NULL}, /* . */ + /* idx 157 */ {6, 196, NULL}, /* . */ + /* idx 158 */ {6, 196, NULL}, /* . */ + /* idx 159 */ {6, 196, NULL}, /* . */ + /* idx 160 */ {6, 198, NULL}, /* . */ + /* idx 161 */ {6, 198, NULL}, /* . */ + /* idx 162 */ {6, 198, NULL}, /* . */ + /* idx 163 */ {6, 198, NULL}, /* . */ + /* idx 164 */ {6, 228, NULL}, /* . */ + /* idx 165 */ {6, 228, NULL}, /* . */ + /* idx 166 */ {6, 228, NULL}, /* . */ + /* idx 167 */ {6, 228, NULL}, /* . */ + /* idx 168 */ {6, 232, NULL}, /* . */ + /* idx 169 */ {6, 232, NULL}, /* . */ + /* idx 170 */ {6, 232, NULL}, /* . */ + /* idx 171 */ {6, 232, NULL}, /* . */ + /* idx 172 */ {6, 233, NULL}, /* . */ + /* idx 173 */ {6, 233, NULL}, /* . */ + /* idx 174 */ {6, 233, NULL}, /* . */ + /* idx 175 */ {6, 233, NULL}, /* . */ + /* idx 176 */ {7, 1, NULL}, + /* idx 177 */ {7, 1, NULL}, + /* idx 178 */ {7, 135, NULL}, + /* idx 179 */ {7, 135, NULL}, + /* idx 180 */ {7, 137, NULL}, + /* idx 181 */ {7, 137, NULL}, + /* idx 182 */ {7, 138, NULL}, + /* idx 183 */ {7, 138, NULL}, + /* idx 184 */ {7, 139, NULL}, + /* idx 185 */ {7, 139, NULL}, + /* idx 186 */ {7, 140, NULL}, + /* idx 187 */ {7, 140, NULL}, + /* idx 188 */ {7, 141, NULL}, + /* idx 189 */ {7, 141, NULL}, + /* idx 190 */ {7, 143, NULL}, + /* idx 191 */ {7, 143, NULL}, + /* idx 192 */ {7, 147, NULL}, + /* idx 193 */ {7, 147, NULL}, + /* idx 194 */ {7, 149, NULL}, + /* idx 195 */ {7, 149, NULL}, + /* idx 196 */ {7, 150, NULL}, + /* idx 197 */ {7, 150, NULL}, + /* idx 198 */ {7, 151, NULL}, + /* idx 199 */ {7, 151, NULL}, + /* idx 200 */ {7, 152, NULL}, + /* idx 201 */ {7, 152, NULL}, + /* idx 202 */ {7, 155, NULL}, + /* idx 203 */ {7, 155, NULL}, + /* idx 204 */ {7, 157, NULL}, + /* idx 205 */ {7, 157, NULL}, + /* idx 206 */ {7, 158, NULL}, + /* idx 207 */ {7, 158, NULL}, + /* idx 208 */ {7, 165, NULL}, + /* idx 209 */ {7, 165, NULL}, + /* idx 210 */ {7, 166, NULL}, + /* idx 211 */ {7, 166, NULL}, + /* idx 212 */ {7, 168, NULL}, + /* idx 213 */ {7, 168, NULL}, + /* idx 214 */ {7, 174, NULL}, + /* idx 215 */ {7, 174, NULL}, + /* idx 216 */ {7, 175, NULL}, + /* idx 217 */ {7, 175, NULL}, + /* idx 218 */ {7, 180, NULL}, + /* idx 219 */ {7, 180, NULL}, + /* idx 220 */ {7, 182, NULL}, + /* idx 221 */ {7, 182, NULL}, + /* idx 222 */ {7, 183, NULL}, + /* idx 223 */ {7, 183, NULL}, + /* idx 224 */ {7, 188, NULL}, + /* idx 225 */ {7, 188, NULL}, + /* idx 226 */ {7, 191, NULL}, + /* idx 227 */ {7, 191, NULL}, + /* idx 228 */ {7, 197, NULL}, + /* idx 229 */ {7, 197, NULL}, + /* idx 230 */ {7, 231, NULL}, + /* idx 231 */ {7, 231, NULL}, + /* idx 232 */ {7, 239, NULL}, + /* idx 233 */ {7, 239, NULL}, + /* idx 234 */ {8, 9, NULL}, + /* idx 235 */ {8, 142, NULL}, + /* idx 236 */ {8, 144, NULL}, + /* idx 237 */ {8, 145, NULL}, + /* idx 238 */ {8, 148, NULL}, + /* idx 239 */ {8, 159, NULL}, + /* idx 240 */ {8, 171, NULL}, + /* idx 241 */ {8, 206, NULL}, + /* idx 242 */ {8, 215, NULL}, + /* idx 243 */ {8, 225, NULL}, + /* idx 244 */ {8, 236, NULL}, + /* idx 245 */ {8, 237, NULL}, + /* idx 246 */ {8, 0, &byte3_pref0110 }, + /* idx 247 */ {8, 0, &byte3_pref0111 }, + /* idx 248 */ {8, 0, &byte3_pref1000 }, + /* idx 249 */ {8, 0, &byte3_pref1001 }, + /* idx 250 */ {8, 0, &byte3_pref1010 }, + /* idx 251 */ {8, 0, &byte3_pref1011 }, + /* idx 252 */ {8, 0, &byte3_pref1100 }, + /* idx 253 */ {8, 0, &byte3_pref1101 }, + /* idx 254 */ {8, 0, &byte3_pref1110 }, + /* idx 255 */ {8, 0, &byte3_pref1111 } }; static struct stbl byte2_pref1 = { 8, - { - /* idx 0 */ {5, 176, NULL}, /* . */ - /* idx 1 */ {5, 176, NULL}, /* . */ - /* idx 2 */ {5, 176, NULL}, /* . */ - /* idx 3 */ {5, 176, NULL}, /* . */ - /* idx 4 */ {5, 176, NULL}, /* . */ - /* idx 5 */ {5, 176, NULL}, /* . */ - /* idx 6 */ {5, 176, NULL}, /* . */ - /* idx 7 */ {5, 176, NULL}, /* . */ - /* idx 8 */ {5, 177, NULL}, /* . */ - /* idx 9 */ {5, 177, NULL}, /* . */ - /* idx 10 */ {5, 177, NULL}, /* . */ - /* idx 11 */ {5, 177, NULL}, /* . */ - /* idx 12 */ {5, 177, NULL}, /* . */ - /* idx 13 */ {5, 177, NULL}, /* . */ - /* idx 14 */ {5, 177, NULL}, /* . */ - /* idx 15 */ {5, 177, NULL}, /* . */ - /* idx 16 */ {5, 179, NULL}, /* */ - /* idx 17 */ {5, 179, NULL}, /* */ - /* idx 18 */ {5, 179, NULL}, /* */ - /* idx 19 */ {5, 179, NULL}, /* */ - /* idx 20 */ {5, 179, NULL}, /* */ - /* idx 21 */ {5, 179, NULL}, /* */ - /* idx 22 */ {5, 179, NULL}, /* */ - /* idx 23 */ {5, 179, NULL}, /* */ - /* idx 24 */ {5, 209, NULL}, /* . */ - /* idx 25 */ {5, 209, NULL}, /* . */ - /* idx 26 */ {5, 209, NULL}, /* . */ - /* idx 27 */ {5, 209, NULL}, /* . */ - /* idx 28 */ {5, 209, NULL}, /* . */ - /* idx 29 */ {5, 209, NULL}, /* . */ - /* idx 30 */ {5, 209, NULL}, /* . */ - /* idx 31 */ {5, 209, NULL}, /* . */ - /* idx 32 */ {5, 216, NULL}, /* . */ - /* idx 33 */ {5, 216, NULL}, /* . */ - /* idx 34 */ {5, 216, NULL}, /* . */ - /* idx 35 */ {5, 216, NULL}, /* . */ - /* idx 36 */ {5, 216, NULL}, /* . */ - /* idx 37 */ {5, 216, NULL}, /* . */ - /* idx 38 */ {5, 216, NULL}, /* . */ - /* idx 39 */ {5, 216, NULL}, /* . */ - /* idx 40 */ {5, 217, NULL}, /* . */ - /* idx 41 */ {5, 217, NULL}, /* . */ - /* idx 42 */ {5, 217, NULL}, /* . */ - /* idx 43 */ {5, 217, NULL}, /* . */ - /* idx 44 */ {5, 217, NULL}, /* . */ - /* idx 45 */ {5, 217, NULL}, /* . */ - /* idx 46 */ {5, 217, NULL}, /* . */ - /* idx 47 */ {5, 217, NULL}, /* . */ - /* idx 48 */ {5, 227, NULL}, /* . */ - /* idx 49 */ {5, 227, NULL}, /* . */ - /* idx 50 */ {5, 227, NULL}, /* . */ - /* idx 51 */ {5, 227, NULL}, /* . */ - /* idx 52 */ {5, 227, NULL}, /* . */ - /* idx 53 */ {5, 227, NULL}, /* . */ - /* idx 54 */ {5, 227, NULL}, /* . */ - /* idx 55 */ {5, 227, NULL}, /* . */ - /* idx 56 */ {5, 229, NULL}, /* . */ - /* idx 57 */ {5, 229, NULL}, /* . */ - /* idx 58 */ {5, 229, NULL}, /* . */ - /* idx 59 */ {5, 229, NULL}, /* . */ - /* idx 60 */ {5, 229, NULL}, /* . */ - /* idx 61 */ {5, 229, NULL}, /* . */ - /* idx 62 */ {5, 229, NULL}, /* . */ - /* idx 63 */ {5, 229, NULL}, /* . */ - /* idx 64 */ {5, 230, NULL}, /* . */ - /* idx 65 */ {5, 230, NULL}, /* . */ - /* idx 66 */ {5, 230, NULL}, /* . */ - /* idx 67 */ {5, 230, NULL}, /* . */ - /* idx 68 */ {5, 230, NULL}, /* . */ - /* idx 69 */ {5, 230, NULL}, /* . */ - /* idx 70 */ {5, 230, NULL}, /* . */ - /* idx 71 */ {5, 230, NULL}, /* . */ - /* idx 72 */ {6, 129, NULL}, /* . */ - /* idx 73 */ {6, 129, NULL}, /* . */ - /* idx 74 */ {6, 129, NULL}, /* . */ - /* idx 75 */ {6, 129, NULL}, /* . */ - /* idx 76 */ {6, 132, NULL}, /* . */ - /* idx 77 */ {6, 132, NULL}, /* . */ - /* idx 78 */ {6, 132, NULL}, /* . */ - /* idx 79 */ {6, 132, NULL}, /* . */ - /* idx 80 */ {6, 133, NULL}, /* . */ - /* idx 81 */ {6, 133, NULL}, /* . */ - /* idx 82 */ {6, 133, NULL}, /* . */ - /* idx 83 */ {6, 133, NULL}, /* . */ - /* idx 84 */ {6, 134, NULL}, /* . */ - /* idx 85 */ {6, 134, NULL}, /* . */ - /* idx 86 */ {6, 134, NULL}, /* . */ - /* idx 87 */ {6, 134, NULL}, /* . */ - /* idx 88 */ {6, 136, NULL}, /* . */ - /* idx 89 */ {6, 136, NULL}, /* . */ - /* idx 90 */ {6, 136, NULL}, /* . */ - /* idx 91 */ {6, 136, NULL}, /* . */ - /* idx 92 */ {6, 146, NULL}, /* . */ - /* idx 93 */ {6, 146, NULL}, /* . */ - /* idx 94 */ {6, 146, NULL}, /* . */ - /* idx 95 */ {6, 146, NULL}, /* . */ - /* idx 96 */ {6, 154, NULL}, /* . */ - /* idx 97 */ {6, 154, NULL}, /* . */ - /* idx 98 */ {6, 154, NULL}, /* . */ - /* idx 99 */ {6, 154, NULL}, /* . */ - /* idx 100 */ {6, 156, NULL}, /* . */ - /* idx 101 */ {6, 156, NULL}, /* . */ - /* idx 102 */ {6, 156, NULL}, /* . */ - /* idx 103 */ {6, 156, NULL}, /* . */ - /* idx 104 */ {6, 160, NULL}, /* . */ - /* idx 105 */ {6, 160, NULL}, /* . */ - /* idx 106 */ {6, 160, NULL}, /* . */ - /* idx 107 */ {6, 160, NULL}, /* . */ - /* idx 108 */ {6, 163, NULL}, /* . */ - /* idx 109 */ {6, 163, NULL}, /* . */ - /* idx 110 */ {6, 163, NULL}, /* . */ - /* idx 111 */ {6, 163, NULL}, /* . */ - /* idx 112 */ {6, 164, NULL}, /* . */ - /* idx 113 */ {6, 164, NULL}, /* . */ - /* idx 114 */ {6, 164, NULL}, /* . */ - /* idx 115 */ {6, 164, NULL}, /* . */ - /* idx 116 */ {6, 169, NULL}, /* . */ - /* idx 117 */ {6, 169, NULL}, /* . */ - /* idx 118 */ {6, 169, NULL}, /* . */ - /* idx 119 */ {6, 169, NULL}, /* . */ - /* idx 120 */ {6, 170, NULL}, /* . */ - /* idx 121 */ {6, 170, NULL}, /* . */ - /* idx 122 */ {6, 170, NULL}, /* . */ - /* idx 123 */ {6, 170, NULL}, /* . */ - /* idx 124 */ {6, 173, NULL}, /* . */ - /* idx 125 */ {6, 173, NULL}, /* . */ - /* idx 126 */ {6, 173, NULL}, /* . */ - /* idx 127 */ {6, 173, NULL}, /* . */ - /* idx 128 */ {6, 176, NULL}, /* . */ - /* idx 129 */ {6, 176, NULL}, /* . */ - /* idx 130 */ {6, 176, NULL}, /* . */ - /* idx 131 */ {6, 176, NULL}, /* . */ - /* idx 132 */ {6, 181, NULL}, /* . */ - /* idx 133 */ {6, 181, NULL}, /* . */ - /* idx 134 */ {6, 181, NULL}, /* . */ - /* idx 135 */ {6, 181, NULL}, /* . */ - /* idx 136 */ {6, 185, NULL}, /* . */ - /* idx 137 */ {6, 185, NULL}, /* . */ - /* idx 138 */ {6, 185, NULL}, /* . */ - /* idx 139 */ {6, 185, NULL}, /* . */ - /* idx 140 */ {6, 186, NULL}, /* . */ - /* idx 141 */ {6, 186, NULL}, /* . */ - /* idx 142 */ {6, 186, NULL}, /* . */ - /* idx 143 */ {6, 186, NULL}, /* . */ - /* idx 144 */ {6, 187, NULL}, /* . */ - /* idx 145 */ {6, 187, NULL}, /* . */ - /* idx 146 */ {6, 187, NULL}, /* . */ - /* idx 147 */ {6, 187, NULL}, /* . */ - /* idx 148 */ {6, 189, NULL}, /* . */ - /* idx 149 */ {6, 189, NULL}, /* . */ - /* idx 150 */ {6, 189, NULL}, /* . */ - /* idx 151 */ {6, 189, NULL}, /* . */ - /* idx 152 */ {6, 190, NULL}, /* . */ - /* idx 153 */ {6, 190, NULL}, /* . */ - /* idx 154 */ {6, 190, NULL}, /* . */ - /* idx 155 */ {6, 190, NULL}, /* . */ - /* idx 156 */ {6, 196, NULL}, /* . */ - /* idx 157 */ {6, 196, NULL}, /* . */ - /* idx 158 */ {6, 196, NULL}, /* . */ - /* idx 159 */ {6, 196, NULL}, /* . */ - /* idx 160 */ {6, 198, NULL}, /* . */ - /* idx 161 */ {6, 198, NULL}, /* . */ - /* idx 162 */ {6, 198, NULL}, /* . */ - /* idx 163 */ {6, 198, NULL}, /* . */ - /* idx 164 */ {6, 228, NULL}, /* . */ - /* idx 165 */ {6, 228, NULL}, /* . */ - /* idx 166 */ {6, 228, NULL}, /* . */ - /* idx 167 */ {6, 228, NULL}, /* . */ - /* idx 168 */ {6, 232, NULL}, /* . */ - /* idx 169 */ {6, 232, NULL}, /* . */ - /* idx 170 */ {6, 232, NULL}, /* . */ - /* idx 171 */ {6, 232, NULL}, /* . */ - /* idx 172 */ {6, 233, NULL}, /* . */ - /* idx 173 */ {6, 233, NULL}, /* . */ - /* idx 174 */ {6, 233, NULL}, /* . */ - /* idx 175 */ {6, 233, NULL}, /* . */ - /* idx 176 */ {7, 1, NULL}, - /* idx 177 */ {7, 1, NULL}, - /* idx 178 */ {7, 135, NULL}, - /* idx 179 */ {7, 135, NULL}, - /* idx 180 */ {7, 137, NULL}, - /* idx 181 */ {7, 137, NULL}, - /* idx 182 */ {7, 138, NULL}, - /* idx 183 */ {7, 138, NULL}, - /* idx 184 */ {7, 139, NULL}, - /* idx 185 */ {7, 139, NULL}, - /* idx 186 */ {7, 140, NULL}, - /* idx 187 */ {7, 140, NULL}, - /* idx 188 */ {7, 141, NULL}, - /* idx 189 */ {7, 141, NULL}, - /* idx 190 */ {7, 143, NULL}, - /* idx 191 */ {7, 143, NULL}, - /* idx 192 */ {7, 147, NULL}, - /* idx 193 */ {7, 147, NULL}, - /* idx 194 */ {7, 149, NULL}, - /* idx 195 */ {7, 149, NULL}, - /* idx 196 */ {7, 150, NULL}, - /* idx 197 */ {7, 150, NULL}, - /* idx 198 */ {7, 151, NULL}, - /* idx 199 */ {7, 151, NULL}, - /* idx 200 */ {7, 152, NULL}, - /* idx 201 */ {7, 152, NULL}, - /* idx 202 */ {7, 155, NULL}, - /* idx 203 */ {7, 155, NULL}, - /* idx 204 */ {7, 157, NULL}, - /* idx 205 */ {7, 157, NULL}, - /* idx 206 */ {7, 158, NULL}, - /* idx 207 */ {7, 158, NULL}, - /* idx 208 */ {7, 165, NULL}, - /* idx 209 */ {7, 165, NULL}, - /* idx 210 */ {7, 166, NULL}, - /* idx 211 */ {7, 166, NULL}, - /* idx 212 */ {7, 168, NULL}, - /* idx 213 */ {7, 168, NULL}, - /* idx 214 */ {7, 174, NULL}, - /* idx 215 */ {7, 174, NULL}, - /* idx 216 */ {7, 175, NULL}, - /* idx 217 */ {7, 175, NULL}, - /* idx 218 */ {7, 180, NULL}, - /* idx 219 */ {7, 180, NULL}, - /* idx 220 */ {7, 182, NULL}, - /* idx 221 */ {7, 182, NULL}, - /* idx 222 */ {7, 183, NULL}, - /* idx 223 */ {7, 183, NULL}, - /* idx 224 */ {7, 188, NULL}, - /* idx 225 */ {7, 188, NULL}, - /* idx 226 */ {7, 191, NULL}, - /* idx 227 */ {7, 191, NULL}, - /* idx 228 */ {7, 197, NULL}, - /* idx 229 */ {7, 197, NULL}, - /* idx 230 */ {7, 231, NULL}, - /* idx 231 */ {7, 231, NULL}, - /* idx 232 */ {7, 239, NULL}, - /* idx 233 */ {7, 239, NULL}, - /* idx 234 */ {8, 9, NULL}, - /* idx 235 */ {8, 142, NULL}, - /* idx 236 */ {8, 144, NULL}, - /* idx 237 */ {8, 145, NULL}, - /* idx 238 */ {8, 148, NULL}, - /* idx 239 */ {8, 159, NULL}, - /* idx 240 */ {8, 171, NULL}, - /* idx 241 */ {8, 206, NULL}, - /* idx 242 */ {8, 215, NULL}, - /* idx 243 */ {8, 225, NULL}, - /* idx 244 */ {8, 236, NULL}, - /* idx 245 */ {8, 237, NULL}, - /* idx 246 */ {8, 0, &byte3_pref0110 }, - /* idx 247 */ {8, 0, &byte3_pref0111 }, - /* idx 248 */ {8, 0, &byte3_pref1000 }, - /* idx 249 */ {8, 0, &byte3_pref1001 }, - /* idx 250 */ {8, 0, &byte3_pref1010 }, - /* idx 251 */ {8, 0, &byte3_pref1011 }, - /* idx 252 */ {8, 0, &byte3_pref1100 }, - /* idx 253 */ {8, 0, &byte3_pref1101 }, - /* idx 254 */ {8, 0, &byte3_pref1110 }, - /* idx 255 */ {8, 0, &byte3_pref1111 } - } + byte2_pref1_array }; - -static struct stbl byte1_pref0 = { - 2, - { +static struct ssym byte1_pref0_array[] = { /* idx 0 */ {2, 33, NULL}, /* '!' */ /* idx 1 */ {2, 34, NULL}, /* '"' */ /* idx 2 */ {2, 40, NULL}, /* '(' */ /* idx 3 */ {2, 41, NULL}, /* ')' */ - } +}; + +static struct stbl byte1_pref0 = { + 2, + byte1_pref0_array +}; + +static struct ssym byte1_pref1_array[] = { + /* idx 0 */ {2, 63, NULL}, /* '?' */ + /* idx 1 */ {2, 63, NULL}, /* '?' */ + /* idx 2 */ {2, 63, NULL}, /* '?' */ + /* idx 3 */ {2, 63, NULL}, /* '?' */ + /* idx 4 */ {2, 63, NULL}, /* '?' */ + /* idx 5 */ {2, 63, NULL}, /* '?' */ + /* idx 6 */ {2, 63, NULL}, /* '?' */ + /* idx 7 */ {2, 63, NULL}, /* '?' */ + /* idx 8 */ {2, 63, NULL}, /* '?' */ + /* idx 9 */ {2, 63, NULL}, /* '?' */ + /* idx 10 */ {2, 63, NULL}, /* '?' */ + /* idx 11 */ {2, 63, NULL}, /* '?' */ + /* idx 12 */ {2, 63, NULL}, /* '?' */ + /* idx 13 */ {2, 63, NULL}, /* '?' */ + /* idx 14 */ {2, 63, NULL}, /* '?' */ + /* idx 15 */ {2, 63, NULL}, /* '?' */ + /* idx 16 */ {2, 63, NULL}, /* '?' */ + /* idx 17 */ {2, 63, NULL}, /* '?' */ + /* idx 18 */ {2, 63, NULL}, /* '?' */ + /* idx 19 */ {2, 63, NULL}, /* '?' */ + /* idx 20 */ {2, 63, NULL}, /* '?' */ + /* idx 21 */ {2, 63, NULL}, /* '?' */ + /* idx 22 */ {2, 63, NULL}, /* '?' */ + /* idx 23 */ {2, 63, NULL}, /* '?' */ + /* idx 24 */ {2, 63, NULL}, /* '?' */ + /* idx 25 */ {2, 63, NULL}, /* '?' */ + /* idx 26 */ {2, 63, NULL}, /* '?' */ + /* idx 27 */ {2, 63, NULL}, /* '?' */ + /* idx 28 */ {2, 63, NULL}, /* '?' */ + /* idx 29 */ {2, 63, NULL}, /* '?' */ + /* idx 30 */ {2, 63, NULL}, /* '?' */ + /* idx 31 */ {2, 63, NULL}, /* '?' */ + /* idx 32 */ {2, 63, NULL}, /* '?' */ + /* idx 33 */ {2, 63, NULL}, /* '?' */ + /* idx 34 */ {2, 63, NULL}, /* '?' */ + /* idx 35 */ {2, 63, NULL}, /* '?' */ + /* idx 36 */ {2, 63, NULL}, /* '?' */ + /* idx 37 */ {2, 63, NULL}, /* '?' */ + /* idx 38 */ {2, 63, NULL}, /* '?' */ + /* idx 39 */ {2, 63, NULL}, /* '?' */ + /* idx 40 */ {2, 63, NULL}, /* '?' */ + /* idx 41 */ {2, 63, NULL}, /* '?' */ + /* idx 42 */ {2, 63, NULL}, /* '?' */ + /* idx 43 */ {2, 63, NULL}, /* '?' */ + /* idx 44 */ {2, 63, NULL}, /* '?' */ + /* idx 45 */ {2, 63, NULL}, /* '?' */ + /* idx 46 */ {2, 63, NULL}, /* '?' */ + /* idx 47 */ {2, 63, NULL}, /* '?' */ + /* idx 48 */ {2, 63, NULL}, /* '?' */ + /* idx 49 */ {2, 63, NULL}, /* '?' */ + /* idx 50 */ {2, 63, NULL}, /* '?' */ + /* idx 51 */ {2, 63, NULL}, /* '?' */ + /* idx 52 */ {2, 63, NULL}, /* '?' */ + /* idx 53 */ {2, 63, NULL}, /* '?' */ + /* idx 54 */ {2, 63, NULL}, /* '?' */ + /* idx 55 */ {2, 63, NULL}, /* '?' */ + /* idx 56 */ {2, 63, NULL}, /* '?' */ + /* idx 57 */ {2, 63, NULL}, /* '?' */ + /* idx 58 */ {2, 63, NULL}, /* '?' */ + /* idx 59 */ {2, 63, NULL}, /* '?' */ + /* idx 60 */ {2, 63, NULL}, /* '?' */ + /* idx 61 */ {2, 63, NULL}, /* '?' */ + /* idx 62 */ {2, 63, NULL}, /* '?' */ + /* idx 63 */ {2, 63, NULL}, /* '?' */ + /* idx 64 */ {3, 39, NULL}, /* ''' */ + /* idx 65 */ {3, 39, NULL}, /* ''' */ + /* idx 66 */ {3, 39, NULL}, /* ''' */ + /* idx 67 */ {3, 39, NULL}, /* ''' */ + /* idx 68 */ {3, 39, NULL}, /* ''' */ + /* idx 69 */ {3, 39, NULL}, /* ''' */ + /* idx 70 */ {3, 39, NULL}, /* ''' */ + /* idx 71 */ {3, 39, NULL}, /* ''' */ + /* idx 72 */ {3, 39, NULL}, /* ''' */ + /* idx 73 */ {3, 39, NULL}, /* ''' */ + /* idx 74 */ {3, 39, NULL}, /* ''' */ + /* idx 75 */ {3, 39, NULL}, /* ''' */ + /* idx 76 */ {3, 39, NULL}, /* ''' */ + /* idx 77 */ {3, 39, NULL}, /* ''' */ + /* idx 78 */ {3, 39, NULL}, /* ''' */ + /* idx 79 */ {3, 39, NULL}, /* ''' */ + /* idx 80 */ {3, 39, NULL}, /* ''' */ + /* idx 81 */ {3, 39, NULL}, /* ''' */ + /* idx 82 */ {3, 39, NULL}, /* ''' */ + /* idx 83 */ {3, 39, NULL}, /* ''' */ + /* idx 84 */ {3, 39, NULL}, /* ''' */ + /* idx 85 */ {3, 39, NULL}, /* ''' */ + /* idx 86 */ {3, 39, NULL}, /* ''' */ + /* idx 87 */ {3, 39, NULL}, /* ''' */ + /* idx 88 */ {3, 39, NULL}, /* ''' */ + /* idx 89 */ {3, 39, NULL}, /* ''' */ + /* idx 90 */ {3, 39, NULL}, /* ''' */ + /* idx 91 */ {3, 39, NULL}, /* ''' */ + /* idx 92 */ {3, 39, NULL}, /* ''' */ + /* idx 93 */ {3, 39, NULL}, /* ''' */ + /* idx 94 */ {3, 39, NULL}, /* ''' */ + /* idx 95 */ {3, 39, NULL}, /* ''' */ + /* idx 96 */ {3, 43, NULL}, /* '+' */ + /* idx 97 */ {3, 43, NULL}, /* '+' */ + /* idx 98 */ {3, 43, NULL}, /* '+' */ + /* idx 99 */ {3, 43, NULL}, /* '+' */ + /* idx 100 */ {3, 43, NULL}, /* '+' */ + /* idx 101 */ {3, 43, NULL}, /* '+' */ + /* idx 102 */ {3, 43, NULL}, /* '+' */ + /* idx 103 */ {3, 43, NULL}, /* '+' */ + /* idx 104 */ {3, 43, NULL}, /* '+' */ + /* idx 105 */ {3, 43, NULL}, /* '+' */ + /* idx 106 */ {3, 43, NULL}, /* '+' */ + /* idx 107 */ {3, 43, NULL}, /* '+' */ + /* idx 108 */ {3, 43, NULL}, /* '+' */ + /* idx 109 */ {3, 43, NULL}, /* '+' */ + /* idx 110 */ {3, 43, NULL}, /* '+' */ + /* idx 111 */ {3, 43, NULL}, /* '+' */ + /* idx 112 */ {3, 43, NULL}, /* '+' */ + /* idx 113 */ {3, 43, NULL}, /* '+' */ + /* idx 114 */ {3, 43, NULL}, /* '+' */ + /* idx 115 */ {3, 43, NULL}, /* '+' */ + /* idx 116 */ {3, 43, NULL}, /* '+' */ + /* idx 117 */ {3, 43, NULL}, /* '+' */ + /* idx 118 */ {3, 43, NULL}, /* '+' */ + /* idx 119 */ {3, 43, NULL}, /* '+' */ + /* idx 120 */ {3, 43, NULL}, /* '+' */ + /* idx 121 */ {3, 43, NULL}, /* '+' */ + /* idx 122 */ {3, 43, NULL}, /* '+' */ + /* idx 123 */ {3, 43, NULL}, /* '+' */ + /* idx 124 */ {3, 43, NULL}, /* '+' */ + /* idx 125 */ {3, 43, NULL}, /* '+' */ + /* idx 126 */ {3, 43, NULL}, /* '+' */ + /* idx 127 */ {3, 43, NULL}, /* '+' */ + /* idx 128 */ {3, 124, NULL}, /* '|' */ + /* idx 129 */ {3, 124, NULL}, /* '|' */ + /* idx 130 */ {3, 124, NULL}, /* '|' */ + /* idx 131 */ {3, 124, NULL}, /* '|' */ + /* idx 132 */ {3, 124, NULL}, /* '|' */ + /* idx 133 */ {3, 124, NULL}, /* '|' */ + /* idx 134 */ {3, 124, NULL}, /* '|' */ + /* idx 135 */ {3, 124, NULL}, /* '|' */ + /* idx 136 */ {3, 124, NULL}, /* '|' */ + /* idx 137 */ {3, 124, NULL}, /* '|' */ + /* idx 138 */ {3, 124, NULL}, /* '|' */ + /* idx 139 */ {3, 124, NULL}, /* '|' */ + /* idx 140 */ {3, 124, NULL}, /* '|' */ + /* idx 141 */ {3, 124, NULL}, /* '|' */ + /* idx 142 */ {3, 124, NULL}, /* '|' */ + /* idx 143 */ {3, 124, NULL}, /* '|' */ + /* idx 144 */ {3, 124, NULL}, /* '|' */ + /* idx 145 */ {3, 124, NULL}, /* '|' */ + /* idx 146 */ {3, 124, NULL}, /* '|' */ + /* idx 147 */ {3, 124, NULL}, /* '|' */ + /* idx 148 */ {3, 124, NULL}, /* '|' */ + /* idx 149 */ {3, 124, NULL}, /* '|' */ + /* idx 150 */ {3, 124, NULL}, /* '|' */ + /* idx 151 */ {3, 124, NULL}, /* '|' */ + /* idx 152 */ {3, 124, NULL}, /* '|' */ + /* idx 153 */ {3, 124, NULL}, /* '|' */ + /* idx 154 */ {3, 124, NULL}, /* '|' */ + /* idx 155 */ {3, 124, NULL}, /* '|' */ + /* idx 156 */ {3, 124, NULL}, /* '|' */ + /* idx 157 */ {3, 124, NULL}, /* '|' */ + /* idx 158 */ {3, 124, NULL}, /* '|' */ + /* idx 159 */ {3, 124, NULL}, /* '|' */ + /* idx 160 */ {4, 35, NULL}, /* '#' */ + /* idx 161 */ {4, 35, NULL}, /* '#' */ + /* idx 162 */ {4, 35, NULL}, /* '#' */ + /* idx 163 */ {4, 35, NULL}, /* '#' */ + /* idx 164 */ {4, 35, NULL}, /* '#' */ + /* idx 165 */ {4, 35, NULL}, /* '#' */ + /* idx 166 */ {4, 35, NULL}, /* '#' */ + /* idx 167 */ {4, 35, NULL}, /* '#' */ + /* idx 168 */ {4, 35, NULL}, /* '#' */ + /* idx 169 */ {4, 35, NULL}, /* '#' */ + /* idx 170 */ {4, 35, NULL}, /* '#' */ + /* idx 171 */ {4, 35, NULL}, /* '#' */ + /* idx 172 */ {4, 35, NULL}, /* '#' */ + /* idx 173 */ {4, 35, NULL}, /* '#' */ + /* idx 174 */ {4, 35, NULL}, /* '#' */ + /* idx 175 */ {4, 35, NULL}, /* '#' */ + /* idx 176 */ {4, 62, NULL}, /* '>' */ + /* idx 177 */ {4, 62, NULL}, /* '>' */ + /* idx 178 */ {4, 62, NULL}, /* '>' */ + /* idx 179 */ {4, 62, NULL}, /* '>' */ + /* idx 180 */ {4, 62, NULL}, /* '>' */ + /* idx 181 */ {4, 62, NULL}, /* '>' */ + /* idx 182 */ {4, 62, NULL}, /* '>' */ + /* idx 183 */ {4, 62, NULL}, /* '>' */ + /* idx 184 */ {4, 62, NULL}, /* '>' */ + /* idx 185 */ {4, 62, NULL}, /* '>' */ + /* idx 186 */ {4, 62, NULL}, /* '>' */ + /* idx 187 */ {4, 62, NULL}, /* '>' */ + /* idx 188 */ {4, 62, NULL}, /* '>' */ + /* idx 189 */ {4, 62, NULL}, /* '>' */ + /* idx 190 */ {4, 62, NULL}, /* '>' */ + /* idx 191 */ {4, 62, NULL}, /* '>' */ + /* idx 192 */ {5, 0, NULL}, /* . */ + /* idx 193 */ {5, 0, NULL}, /* . */ + /* idx 194 */ {5, 0, NULL}, /* . */ + /* idx 195 */ {5, 0, NULL}, /* . */ + /* idx 196 */ {5, 0, NULL}, /* . */ + /* idx 197 */ {5, 0, NULL}, /* . */ + /* idx 198 */ {5, 0, NULL}, /* . */ + /* idx 199 */ {5, 0, NULL}, /* . */ + /* idx 200 */ {5, 36, NULL}, /* $ */ + /* idx 201 */ {5, 36, NULL}, /* $ */ + /* idx 202 */ {5, 36, NULL}, /* $ */ + /* idx 203 */ {5, 36, NULL}, /* $ */ + /* idx 204 */ {5, 36, NULL}, /* $ */ + /* idx 205 */ {5, 36, NULL}, /* $ */ + /* idx 206 */ {5, 36, NULL}, /* $ */ + /* idx 207 */ {5, 36, NULL}, /* $ */ + /* idx 208 */ {5, 64, NULL}, /* '@' */ + /* idx 209 */ {5, 64, NULL}, /* '@' */ + /* idx 210 */ {5, 64, NULL}, /* '@' */ + /* idx 211 */ {5, 64, NULL}, /* '@' */ + /* idx 212 */ {5, 64, NULL}, /* '@' */ + /* idx 213 */ {5, 64, NULL}, /* '@' */ + /* idx 214 */ {5, 64, NULL}, /* '@' */ + /* idx 215 */ {5, 64, NULL}, /* '@' */ + /* idx 216 */ {5, 91, NULL}, /* '[' */ + /* idx 217 */ {5, 91, NULL}, /* '[' */ + /* idx 218 */ {5, 91, NULL}, /* '[' */ + /* idx 219 */ {5, 91, NULL}, /* '[' */ + /* idx 220 */ {5, 91, NULL}, /* '[' */ + /* idx 221 */ {5, 91, NULL}, /* '[' */ + /* idx 222 */ {5, 91, NULL}, /* '[' */ + /* idx 223 */ {5, 91, NULL}, /* '[' */ + /* idx 224 */ {5, 93, NULL}, /* ']' */ + /* idx 225 */ {5, 93, NULL}, /* ']' */ + /* idx 226 */ {5, 93, NULL}, /* ']' */ + /* idx 227 */ {5, 93, NULL}, /* ']' */ + /* idx 228 */ {5, 93, NULL}, /* ']' */ + /* idx 229 */ {5, 93, NULL}, /* ']' */ + /* idx 230 */ {5, 93, NULL}, /* ']' */ + /* idx 231 */ {5, 93, NULL}, /* ']' */ + /* idx 232 */ {5, 126, NULL}, /* '~' */ + /* idx 233 */ {5, 126, NULL}, /* '~' */ + /* idx 234 */ {5, 126, NULL}, /* '~' */ + /* idx 235 */ {5, 126, NULL}, /* '~' */ + /* idx 236 */ {5, 126, NULL}, /* '~' */ + /* idx 237 */ {5, 126, NULL}, /* '~' */ + /* idx 238 */ {5, 126, NULL}, /* '~' */ + /* idx 239 */ {5, 126, NULL}, /* '~' */ + /* idx 240 */ {6, 94, NULL}, /* '^' */ + /* idx 241 */ {6, 94, NULL}, /* '^' */ + /* idx 242 */ {6, 94, NULL}, /* '^' */ + /* idx 243 */ {6, 94, NULL}, /* '^' */ + /* idx 244 */ {6, 125, NULL}, /* '}' */ + /* idx 245 */ {6, 125, NULL}, /* '}' */ + /* idx 246 */ {6, 125, NULL}, /* '}' */ + /* idx 247 */ {6, 125, NULL}, /* '}' */ + /* idx 248 */ {7, 60, NULL}, /* '<' */ + /* idx 249 */ {7, 60, NULL}, /* '<' */ + /* idx 250 */ {7, 96, NULL}, /* '`' */ + /* idx 251 */ {7, 96, NULL}, /* '`' */ + /* idx 252 */ {7, 123, NULL}, /* '{' */ + /* idx 253 */ {7, 123, NULL}, /* '{' */ + /* idx 254 */ {8, 0, &byte2_pref0}, /* escape */ + /* idx 255 */ {8, 0, &byte2_pref1} /* escape */ }; static struct stbl byte1_pref1 = { 8, - { - /* idx 0 */ {2, 63, NULL}, /* '?' */ - /* idx 1 */ {2, 63, NULL}, /* '?' */ - /* idx 2 */ {2, 63, NULL}, /* '?' */ - /* idx 3 */ {2, 63, NULL}, /* '?' */ - /* idx 4 */ {2, 63, NULL}, /* '?' */ - /* idx 5 */ {2, 63, NULL}, /* '?' */ - /* idx 6 */ {2, 63, NULL}, /* '?' */ - /* idx 7 */ {2, 63, NULL}, /* '?' */ - /* idx 8 */ {2, 63, NULL}, /* '?' */ - /* idx 9 */ {2, 63, NULL}, /* '?' */ - /* idx 10 */ {2, 63, NULL}, /* '?' */ - /* idx 11 */ {2, 63, NULL}, /* '?' */ - /* idx 12 */ {2, 63, NULL}, /* '?' */ - /* idx 13 */ {2, 63, NULL}, /* '?' */ - /* idx 14 */ {2, 63, NULL}, /* '?' */ - /* idx 15 */ {2, 63, NULL}, /* '?' */ - /* idx 16 */ {2, 63, NULL}, /* '?' */ - /* idx 17 */ {2, 63, NULL}, /* '?' */ - /* idx 18 */ {2, 63, NULL}, /* '?' */ - /* idx 19 */ {2, 63, NULL}, /* '?' */ - /* idx 20 */ {2, 63, NULL}, /* '?' */ - /* idx 21 */ {2, 63, NULL}, /* '?' */ - /* idx 22 */ {2, 63, NULL}, /* '?' */ - /* idx 23 */ {2, 63, NULL}, /* '?' */ - /* idx 24 */ {2, 63, NULL}, /* '?' */ - /* idx 25 */ {2, 63, NULL}, /* '?' */ - /* idx 26 */ {2, 63, NULL}, /* '?' */ - /* idx 27 */ {2, 63, NULL}, /* '?' */ - /* idx 28 */ {2, 63, NULL}, /* '?' */ - /* idx 29 */ {2, 63, NULL}, /* '?' */ - /* idx 30 */ {2, 63, NULL}, /* '?' */ - /* idx 31 */ {2, 63, NULL}, /* '?' */ - /* idx 32 */ {2, 63, NULL}, /* '?' */ - /* idx 33 */ {2, 63, NULL}, /* '?' */ - /* idx 34 */ {2, 63, NULL}, /* '?' */ - /* idx 35 */ {2, 63, NULL}, /* '?' */ - /* idx 36 */ {2, 63, NULL}, /* '?' */ - /* idx 37 */ {2, 63, NULL}, /* '?' */ - /* idx 38 */ {2, 63, NULL}, /* '?' */ - /* idx 39 */ {2, 63, NULL}, /* '?' */ - /* idx 40 */ {2, 63, NULL}, /* '?' */ - /* idx 41 */ {2, 63, NULL}, /* '?' */ - /* idx 42 */ {2, 63, NULL}, /* '?' */ - /* idx 43 */ {2, 63, NULL}, /* '?' */ - /* idx 44 */ {2, 63, NULL}, /* '?' */ - /* idx 45 */ {2, 63, NULL}, /* '?' */ - /* idx 46 */ {2, 63, NULL}, /* '?' */ - /* idx 47 */ {2, 63, NULL}, /* '?' */ - /* idx 48 */ {2, 63, NULL}, /* '?' */ - /* idx 49 */ {2, 63, NULL}, /* '?' */ - /* idx 50 */ {2, 63, NULL}, /* '?' */ - /* idx 51 */ {2, 63, NULL}, /* '?' */ - /* idx 52 */ {2, 63, NULL}, /* '?' */ - /* idx 53 */ {2, 63, NULL}, /* '?' */ - /* idx 54 */ {2, 63, NULL}, /* '?' */ - /* idx 55 */ {2, 63, NULL}, /* '?' */ - /* idx 56 */ {2, 63, NULL}, /* '?' */ - /* idx 57 */ {2, 63, NULL}, /* '?' */ - /* idx 58 */ {2, 63, NULL}, /* '?' */ - /* idx 59 */ {2, 63, NULL}, /* '?' */ - /* idx 60 */ {2, 63, NULL}, /* '?' */ - /* idx 61 */ {2, 63, NULL}, /* '?' */ - /* idx 62 */ {2, 63, NULL}, /* '?' */ - /* idx 63 */ {2, 63, NULL}, /* '?' */ - /* idx 64 */ {3, 39, NULL}, /* ''' */ - /* idx 65 */ {3, 39, NULL}, /* ''' */ - /* idx 66 */ {3, 39, NULL}, /* ''' */ - /* idx 67 */ {3, 39, NULL}, /* ''' */ - /* idx 68 */ {3, 39, NULL}, /* ''' */ - /* idx 69 */ {3, 39, NULL}, /* ''' */ - /* idx 70 */ {3, 39, NULL}, /* ''' */ - /* idx 71 */ {3, 39, NULL}, /* ''' */ - /* idx 72 */ {3, 39, NULL}, /* ''' */ - /* idx 73 */ {3, 39, NULL}, /* ''' */ - /* idx 74 */ {3, 39, NULL}, /* ''' */ - /* idx 75 */ {3, 39, NULL}, /* ''' */ - /* idx 76 */ {3, 39, NULL}, /* ''' */ - /* idx 77 */ {3, 39, NULL}, /* ''' */ - /* idx 78 */ {3, 39, NULL}, /* ''' */ - /* idx 79 */ {3, 39, NULL}, /* ''' */ - /* idx 80 */ {3, 39, NULL}, /* ''' */ - /* idx 81 */ {3, 39, NULL}, /* ''' */ - /* idx 82 */ {3, 39, NULL}, /* ''' */ - /* idx 83 */ {3, 39, NULL}, /* ''' */ - /* idx 84 */ {3, 39, NULL}, /* ''' */ - /* idx 85 */ {3, 39, NULL}, /* ''' */ - /* idx 86 */ {3, 39, NULL}, /* ''' */ - /* idx 87 */ {3, 39, NULL}, /* ''' */ - /* idx 88 */ {3, 39, NULL}, /* ''' */ - /* idx 89 */ {3, 39, NULL}, /* ''' */ - /* idx 90 */ {3, 39, NULL}, /* ''' */ - /* idx 91 */ {3, 39, NULL}, /* ''' */ - /* idx 92 */ {3, 39, NULL}, /* ''' */ - /* idx 93 */ {3, 39, NULL}, /* ''' */ - /* idx 94 */ {3, 39, NULL}, /* ''' */ - /* idx 95 */ {3, 39, NULL}, /* ''' */ - /* idx 96 */ {3, 43, NULL}, /* '+' */ - /* idx 97 */ {3, 43, NULL}, /* '+' */ - /* idx 98 */ {3, 43, NULL}, /* '+' */ - /* idx 99 */ {3, 43, NULL}, /* '+' */ - /* idx 100 */ {3, 43, NULL}, /* '+' */ - /* idx 101 */ {3, 43, NULL}, /* '+' */ - /* idx 102 */ {3, 43, NULL}, /* '+' */ - /* idx 103 */ {3, 43, NULL}, /* '+' */ - /* idx 104 */ {3, 43, NULL}, /* '+' */ - /* idx 105 */ {3, 43, NULL}, /* '+' */ - /* idx 106 */ {3, 43, NULL}, /* '+' */ - /* idx 107 */ {3, 43, NULL}, /* '+' */ - /* idx 108 */ {3, 43, NULL}, /* '+' */ - /* idx 109 */ {3, 43, NULL}, /* '+' */ - /* idx 110 */ {3, 43, NULL}, /* '+' */ - /* idx 111 */ {3, 43, NULL}, /* '+' */ - /* idx 112 */ {3, 43, NULL}, /* '+' */ - /* idx 113 */ {3, 43, NULL}, /* '+' */ - /* idx 114 */ {3, 43, NULL}, /* '+' */ - /* idx 115 */ {3, 43, NULL}, /* '+' */ - /* idx 116 */ {3, 43, NULL}, /* '+' */ - /* idx 117 */ {3, 43, NULL}, /* '+' */ - /* idx 118 */ {3, 43, NULL}, /* '+' */ - /* idx 119 */ {3, 43, NULL}, /* '+' */ - /* idx 120 */ {3, 43, NULL}, /* '+' */ - /* idx 121 */ {3, 43, NULL}, /* '+' */ - /* idx 122 */ {3, 43, NULL}, /* '+' */ - /* idx 123 */ {3, 43, NULL}, /* '+' */ - /* idx 124 */ {3, 43, NULL}, /* '+' */ - /* idx 125 */ {3, 43, NULL}, /* '+' */ - /* idx 126 */ {3, 43, NULL}, /* '+' */ - /* idx 127 */ {3, 43, NULL}, /* '+' */ - /* idx 128 */ {3, 124, NULL}, /* '|' */ - /* idx 129 */ {3, 124, NULL}, /* '|' */ - /* idx 130 */ {3, 124, NULL}, /* '|' */ - /* idx 131 */ {3, 124, NULL}, /* '|' */ - /* idx 132 */ {3, 124, NULL}, /* '|' */ - /* idx 133 */ {3, 124, NULL}, /* '|' */ - /* idx 134 */ {3, 124, NULL}, /* '|' */ - /* idx 135 */ {3, 124, NULL}, /* '|' */ - /* idx 136 */ {3, 124, NULL}, /* '|' */ - /* idx 137 */ {3, 124, NULL}, /* '|' */ - /* idx 138 */ {3, 124, NULL}, /* '|' */ - /* idx 139 */ {3, 124, NULL}, /* '|' */ - /* idx 140 */ {3, 124, NULL}, /* '|' */ - /* idx 141 */ {3, 124, NULL}, /* '|' */ - /* idx 142 */ {3, 124, NULL}, /* '|' */ - /* idx 143 */ {3, 124, NULL}, /* '|' */ - /* idx 144 */ {3, 124, NULL}, /* '|' */ - /* idx 145 */ {3, 124, NULL}, /* '|' */ - /* idx 146 */ {3, 124, NULL}, /* '|' */ - /* idx 147 */ {3, 124, NULL}, /* '|' */ - /* idx 148 */ {3, 124, NULL}, /* '|' */ - /* idx 149 */ {3, 124, NULL}, /* '|' */ - /* idx 150 */ {3, 124, NULL}, /* '|' */ - /* idx 151 */ {3, 124, NULL}, /* '|' */ - /* idx 152 */ {3, 124, NULL}, /* '|' */ - /* idx 153 */ {3, 124, NULL}, /* '|' */ - /* idx 154 */ {3, 124, NULL}, /* '|' */ - /* idx 155 */ {3, 124, NULL}, /* '|' */ - /* idx 156 */ {3, 124, NULL}, /* '|' */ - /* idx 157 */ {3, 124, NULL}, /* '|' */ - /* idx 158 */ {3, 124, NULL}, /* '|' */ - /* idx 159 */ {3, 124, NULL}, /* '|' */ - /* idx 160 */ {4, 35, NULL}, /* '#' */ - /* idx 161 */ {4, 35, NULL}, /* '#' */ - /* idx 162 */ {4, 35, NULL}, /* '#' */ - /* idx 163 */ {4, 35, NULL}, /* '#' */ - /* idx 164 */ {4, 35, NULL}, /* '#' */ - /* idx 165 */ {4, 35, NULL}, /* '#' */ - /* idx 166 */ {4, 35, NULL}, /* '#' */ - /* idx 167 */ {4, 35, NULL}, /* '#' */ - /* idx 168 */ {4, 35, NULL}, /* '#' */ - /* idx 169 */ {4, 35, NULL}, /* '#' */ - /* idx 170 */ {4, 35, NULL}, /* '#' */ - /* idx 171 */ {4, 35, NULL}, /* '#' */ - /* idx 172 */ {4, 35, NULL}, /* '#' */ - /* idx 173 */ {4, 35, NULL}, /* '#' */ - /* idx 174 */ {4, 35, NULL}, /* '#' */ - /* idx 175 */ {4, 35, NULL}, /* '#' */ - /* idx 176 */ {4, 62, NULL}, /* '>' */ - /* idx 177 */ {4, 62, NULL}, /* '>' */ - /* idx 178 */ {4, 62, NULL}, /* '>' */ - /* idx 179 */ {4, 62, NULL}, /* '>' */ - /* idx 180 */ {4, 62, NULL}, /* '>' */ - /* idx 181 */ {4, 62, NULL}, /* '>' */ - /* idx 182 */ {4, 62, NULL}, /* '>' */ - /* idx 183 */ {4, 62, NULL}, /* '>' */ - /* idx 184 */ {4, 62, NULL}, /* '>' */ - /* idx 185 */ {4, 62, NULL}, /* '>' */ - /* idx 186 */ {4, 62, NULL}, /* '>' */ - /* idx 187 */ {4, 62, NULL}, /* '>' */ - /* idx 188 */ {4, 62, NULL}, /* '>' */ - /* idx 189 */ {4, 62, NULL}, /* '>' */ - /* idx 190 */ {4, 62, NULL}, /* '>' */ - /* idx 191 */ {4, 62, NULL}, /* '>' */ - /* idx 192 */ {5, 0, NULL}, /* . */ - /* idx 193 */ {5, 0, NULL}, /* . */ - /* idx 194 */ {5, 0, NULL}, /* . */ - /* idx 195 */ {5, 0, NULL}, /* . */ - /* idx 196 */ {5, 0, NULL}, /* . */ - /* idx 197 */ {5, 0, NULL}, /* . */ - /* idx 198 */ {5, 0, NULL}, /* . */ - /* idx 199 */ {5, 0, NULL}, /* . */ - /* idx 200 */ {5, 36, NULL}, /* $ */ - /* idx 201 */ {5, 36, NULL}, /* $ */ - /* idx 202 */ {5, 36, NULL}, /* $ */ - /* idx 203 */ {5, 36, NULL}, /* $ */ - /* idx 204 */ {5, 36, NULL}, /* $ */ - /* idx 205 */ {5, 36, NULL}, /* $ */ - /* idx 206 */ {5, 36, NULL}, /* $ */ - /* idx 207 */ {5, 36, NULL}, /* $ */ - /* idx 208 */ {5, 64, NULL}, /* '@' */ - /* idx 209 */ {5, 64, NULL}, /* '@' */ - /* idx 210 */ {5, 64, NULL}, /* '@' */ - /* idx 211 */ {5, 64, NULL}, /* '@' */ - /* idx 212 */ {5, 64, NULL}, /* '@' */ - /* idx 213 */ {5, 64, NULL}, /* '@' */ - /* idx 214 */ {5, 64, NULL}, /* '@' */ - /* idx 215 */ {5, 64, NULL}, /* '@' */ - /* idx 216 */ {5, 91, NULL}, /* '[' */ - /* idx 217 */ {5, 91, NULL}, /* '[' */ - /* idx 218 */ {5, 91, NULL}, /* '[' */ - /* idx 219 */ {5, 91, NULL}, /* '[' */ - /* idx 220 */ {5, 91, NULL}, /* '[' */ - /* idx 221 */ {5, 91, NULL}, /* '[' */ - /* idx 222 */ {5, 91, NULL}, /* '[' */ - /* idx 223 */ {5, 91, NULL}, /* '[' */ - /* idx 224 */ {5, 93, NULL}, /* ']' */ - /* idx 225 */ {5, 93, NULL}, /* ']' */ - /* idx 226 */ {5, 93, NULL}, /* ']' */ - /* idx 227 */ {5, 93, NULL}, /* ']' */ - /* idx 228 */ {5, 93, NULL}, /* ']' */ - /* idx 229 */ {5, 93, NULL}, /* ']' */ - /* idx 230 */ {5, 93, NULL}, /* ']' */ - /* idx 231 */ {5, 93, NULL}, /* ']' */ - /* idx 232 */ {5, 126, NULL}, /* '~' */ - /* idx 233 */ {5, 126, NULL}, /* '~' */ - /* idx 234 */ {5, 126, NULL}, /* '~' */ - /* idx 235 */ {5, 126, NULL}, /* '~' */ - /* idx 236 */ {5, 126, NULL}, /* '~' */ - /* idx 237 */ {5, 126, NULL}, /* '~' */ - /* idx 238 */ {5, 126, NULL}, /* '~' */ - /* idx 239 */ {5, 126, NULL}, /* '~' */ - /* idx 240 */ {6, 94, NULL}, /* '^' */ - /* idx 241 */ {6, 94, NULL}, /* '^' */ - /* idx 242 */ {6, 94, NULL}, /* '^' */ - /* idx 243 */ {6, 94, NULL}, /* '^' */ - /* idx 244 */ {6, 125, NULL}, /* '}' */ - /* idx 245 */ {6, 125, NULL}, /* '}' */ - /* idx 246 */ {6, 125, NULL}, /* '}' */ - /* idx 247 */ {6, 125, NULL}, /* '}' */ - /* idx 248 */ {7, 60, NULL}, /* '<' */ - /* idx 249 */ {7, 60, NULL}, /* '<' */ - /* idx 250 */ {7, 96, NULL}, /* '`' */ - /* idx 251 */ {7, 96, NULL}, /* '`' */ - /* idx 252 */ {7, 123, NULL}, /* '{' */ - /* idx 253 */ {7, 123, NULL}, /* '{' */ - /* idx 254 */ {8, 0, &byte2_pref0}, /* escape */ - /* idx 255 */ {8, 0, &byte2_pref1} /* escape */ - } + byte1_pref1_array }; +static struct ssym byte0_array[] = { + /* idx 0 */ {5, 48, NULL}, /* '0' */ + /* idx 1 */ {5, 48, NULL}, /* '0' */ + /* idx 2 */ {5, 48, NULL}, /* '0' */ + /* idx 3 */ {5, 48, NULL}, /* '0' */ + /* idx 4 */ {5, 48, NULL}, /* '0' */ + /* idx 5 */ {5, 48, NULL}, /* '0' */ + /* idx 6 */ {5, 48, NULL}, /* '0' */ + /* idx 7 */ {5, 48, NULL}, /* '0' */ + /* idx 8 */ {5, 49, NULL}, /* '1' */ + /* idx 9 */ {5, 49, NULL}, /* '1' */ + /* idx 10 */ {5, 49, NULL}, /* '1' */ + /* idx 11 */ {5, 49, NULL}, /* '1' */ + /* idx 12 */ {5, 49, NULL}, /* '1' */ + /* idx 13 */ {5, 49, NULL}, /* '1' */ + /* idx 14 */ {5, 49, NULL}, /* '1' */ + /* idx 15 */ {5, 49, NULL}, /* '1' */ + /* idx 16 */ {5, 50, NULL}, /* '2' */ + /* idx 17 */ {5, 50, NULL}, /* '2' */ + /* idx 18 */ {5, 50, NULL}, /* '2' */ + /* idx 19 */ {5, 50, NULL}, /* '2' */ + /* idx 20 */ {5, 50, NULL}, /* '2' */ + /* idx 21 */ {5, 50, NULL}, /* '2' */ + /* idx 22 */ {5, 50, NULL}, /* '2' */ + /* idx 23 */ {5, 50, NULL}, /* '2' */ + /* idx 24 */ {5, 97, NULL}, /* 'a' */ + /* idx 25 */ {5, 97, NULL}, /* 'a' */ + /* idx 26 */ {5, 97, NULL}, /* 'a' */ + /* idx 27 */ {5, 97, NULL}, /* 'a' */ + /* idx 28 */ {5, 97, NULL}, /* 'a' */ + /* idx 29 */ {5, 97, NULL}, /* 'a' */ + /* idx 30 */ {5, 97, NULL}, /* 'a' */ + /* idx 31 */ {5, 97, NULL}, /* 'a' */ + /* idx 32 */ {5, 99, NULL}, /* 'c' */ + /* idx 33 */ {5, 99, NULL}, /* 'c' */ + /* idx 34 */ {5, 99, NULL}, /* 'c' */ + /* idx 35 */ {5, 99, NULL}, /* 'c' */ + /* idx 36 */ {5, 99, NULL}, /* 'c' */ + /* idx 37 */ {5, 99, NULL}, /* 'c' */ + /* idx 38 */ {5, 99, NULL}, /* 'c' */ + /* idx 39 */ {5, 99, NULL}, /* 'c' */ + /* idx 40 */ {5, 101, NULL}, /* 'e' */ + /* idx 41 */ {5, 101, NULL}, /* 'e' */ + /* idx 42 */ {5, 101, NULL}, /* 'e' */ + /* idx 43 */ {5, 101, NULL}, /* 'e' */ + /* idx 44 */ {5, 101, NULL}, /* 'e' */ + /* idx 45 */ {5, 101, NULL}, /* 'e' */ + /* idx 46 */ {5, 101, NULL}, /* 'e' */ + /* idx 47 */ {5, 101, NULL}, /* 'e' */ + /* idx 48 */ {5, 105, NULL}, /* 'i' */ + /* idx 49 */ {5, 105, NULL}, /* 'i' */ + /* idx 50 */ {5, 105, NULL}, /* 'i' */ + /* idx 51 */ {5, 105, NULL}, /* 'i' */ + /* idx 52 */ {5, 105, NULL}, /* 'i' */ + /* idx 53 */ {5, 105, NULL}, /* 'i' */ + /* idx 54 */ {5, 105, NULL}, /* 'i' */ + /* idx 55 */ {5, 105, NULL}, /* 'i' */ + /* idx 56 */ {5, 111, NULL}, /* 'o' */ + /* idx 57 */ {5, 111, NULL}, /* 'o' */ + /* idx 58 */ {5, 111, NULL}, /* 'o' */ + /* idx 59 */ {5, 111, NULL}, /* 'o' */ + /* idx 60 */ {5, 111, NULL}, /* 'o' */ + /* idx 61 */ {5, 111, NULL}, /* 'o' */ + /* idx 62 */ {5, 111, NULL}, /* 'o' */ + /* idx 63 */ {5, 111, NULL}, /* 'o' */ + /* idx 64 */ {5, 115, NULL}, /* 's' */ + /* idx 65 */ {5, 115, NULL}, /* 's' */ + /* idx 66 */ {5, 115, NULL}, /* 's' */ + /* idx 67 */ {5, 115, NULL}, /* 's' */ + /* idx 68 */ {5, 115, NULL}, /* 's' */ + /* idx 69 */ {5, 115, NULL}, /* 's' */ + /* idx 70 */ {5, 115, NULL}, /* 's' */ + /* idx 71 */ {5, 115, NULL}, /* 's' */ + /* idx 72 */ {5, 116, NULL}, /* 't' */ + /* idx 73 */ {5, 116, NULL}, /* 't' */ + /* idx 74 */ {5, 116, NULL}, /* 't' */ + /* idx 75 */ {5, 116, NULL}, /* 't' */ + /* idx 76 */ {5, 116, NULL}, /* 't' */ + /* idx 77 */ {5, 116, NULL}, /* 't' */ + /* idx 78 */ {5, 116, NULL}, /* 't' */ + /* idx 79 */ {5, 116, NULL}, /* 't' */ + /* idx 80 */ {6, 32, NULL}, /* tab */ + /* idx 81 */ {6, 32, NULL}, /* tab */ + /* idx 82 */ {6, 32, NULL}, /* tab */ + /* idx 83 */ {6, 32, NULL}, /* tab */ + /* idx 84 */ {6, 37, NULL}, /* '%' */ + /* idx 85 */ {6, 37, NULL}, /* '%' */ + /* idx 86 */ {6, 37, NULL}, /* '%' */ + /* idx 87 */ {6, 37, NULL}, /* '%' */ + /* idx 88 */ {6, 45, NULL}, /* '-' */ + /* idx 89 */ {6, 45, NULL}, /* '-' */ + /* idx 90 */ {6, 45, NULL}, /* '-' */ + /* idx 91 */ {6, 45, NULL}, /* '-' */ + /* idx 92 */ {6, 46, NULL}, /* '.' */ + /* idx 93 */ {6, 46, NULL}, /* '.' */ + /* idx 94 */ {6, 46, NULL}, /* '.' */ + /* idx 95 */ {6, 46, NULL}, /* '.' */ + /* idx 96 */ {6, 47, NULL}, /* '/' */ + /* idx 97 */ {6, 47, NULL}, /* '/' */ + /* idx 98 */ {6, 47, NULL}, /* '/' */ + /* idx 99 */ {6, 47, NULL}, /* '/' */ + /* idx 100 */ {6, 51, NULL}, /* '3' */ + /* idx 101 */ {6, 51, NULL}, /* '3' */ + /* idx 102 */ {6, 51, NULL}, /* '3' */ + /* idx 103 */ {6, 51, NULL}, /* '3' */ + /* idx 104 */ {6, 52, NULL}, /* '4' */ + /* idx 105 */ {6, 52, NULL}, /* '4' */ + /* idx 106 */ {6, 52, NULL}, /* '4' */ + /* idx 107 */ {6, 52, NULL}, /* '4' */ + /* idx 108 */ {6, 53, NULL}, /* '5' */ + /* idx 109 */ {6, 53, NULL}, /* '5' */ + /* idx 110 */ {6, 53, NULL}, /* '5' */ + /* idx 111 */ {6, 53, NULL}, /* '5' */ + /* idx 112 */ {6, 54, NULL}, /* '6' */ + /* idx 113 */ {6, 54, NULL}, /* '6' */ + /* idx 114 */ {6, 54, NULL}, /* '6' */ + /* idx 115 */ {6, 54, NULL}, /* '6' */ + /* idx 116 */ {6, 55, NULL}, /* '7' */ + /* idx 117 */ {6, 55, NULL}, /* '7' */ + /* idx 118 */ {6, 55, NULL}, /* '7' */ + /* idx 119 */ {6, 55, NULL}, /* '7' */ + /* idx 120 */ {6, 56, NULL}, /* '8' */ + /* idx 121 */ {6, 56, NULL}, /* '8' */ + /* idx 122 */ {6, 56, NULL}, /* '8' */ + /* idx 123 */ {6, 56, NULL}, /* '8' */ + /* idx 124 */ {6, 57, NULL}, /* '9' */ + /* idx 125 */ {6, 57, NULL}, /* '9' */ + /* idx 126 */ {6, 57, NULL}, /* '9' */ + /* idx 127 */ {6, 57, NULL}, /* '9' */ + /* idx 128 */ {6, 61, NULL}, /* '=' */ + /* idx 129 */ {6, 61, NULL}, /* '=' */ + /* idx 130 */ {6, 61, NULL}, /* '=' */ + /* idx 131 */ {6, 61, NULL}, /* '=' */ + /* idx 132 */ {6, 65, NULL}, /* 'A' */ + /* idx 133 */ {6, 65, NULL}, /* 'A' */ + /* idx 134 */ {6, 65, NULL}, /* 'A' */ + /* idx 135 */ {6, 65, NULL}, /* 'A' */ + /* idx 136 */ {6, 95, NULL}, /* '_' */ + /* idx 137 */ {6, 95, NULL}, /* '_' */ + /* idx 138 */ {6, 95, NULL}, /* '_' */ + /* idx 139 */ {6, 95, NULL}, /* '_' */ + /* idx 140 */ {6, 98, NULL}, /* 'b' */ + /* idx 141 */ {6, 98, NULL}, /* 'b' */ + /* idx 142 */ {6, 98, NULL}, /* 'b' */ + /* idx 143 */ {6, 98, NULL}, /* 'b' */ + /* idx 144 */ {6, 100, NULL}, /* 'd' */ + /* idx 145 */ {6, 100, NULL}, /* 'd' */ + /* idx 146 */ {6, 100, NULL}, /* 'd' */ + /* idx 147 */ {6, 100, NULL}, /* 'd' */ + /* idx 148 */ {6, 102, NULL}, /* 'f' */ + /* idx 149 */ {6, 102, NULL}, /* 'f' */ + /* idx 150 */ {6, 102, NULL}, /* 'f' */ + /* idx 151 */ {6, 102, NULL}, /* 'f' */ + /* idx 152 */ {6, 103, NULL}, /* 'g' */ + /* idx 153 */ {6, 103, NULL}, /* 'g' */ + /* idx 154 */ {6, 103, NULL}, /* 'g' */ + /* idx 155 */ {6, 103, NULL}, /* 'g' */ + /* idx 156 */ {6, 104, NULL}, /* 'h' */ + /* idx 157 */ {6, 104, NULL}, /* 'h' */ + /* idx 158 */ {6, 104, NULL}, /* 'h' */ + /* idx 159 */ {6, 104, NULL}, /* 'h' */ + /* idx 160 */ {6, 108, NULL}, /* 'l' */ + /* idx 161 */ {6, 108, NULL}, /* 'l' */ + /* idx 162 */ {6, 108, NULL}, /* 'l' */ + /* idx 163 */ {6, 108, NULL}, /* 'l' */ + /* idx 164 */ {6, 109, NULL}, /* 'm' */ + /* idx 165 */ {6, 109, NULL}, /* 'm' */ + /* idx 166 */ {6, 109, NULL}, /* 'm' */ + /* idx 167 */ {6, 109, NULL}, /* 'm' */ + /* idx 168 */ {6, 110, NULL}, /* 'n' */ + /* idx 169 */ {6, 110, NULL}, /* 'n' */ + /* idx 170 */ {6, 110, NULL}, /* 'n' */ + /* idx 171 */ {6, 110, NULL}, /* 'n' */ + /* idx 172 */ {6, 112, NULL}, /* 'p' */ + /* idx 173 */ {6, 112, NULL}, /* 'p' */ + /* idx 174 */ {6, 112, NULL}, /* 'p' */ + /* idx 175 */ {6, 112, NULL}, /* 'p' */ + /* idx 176 */ {6, 114, NULL}, /* 'r' */ + /* idx 177 */ {6, 114, NULL}, /* 'r' */ + /* idx 178 */ {6, 114, NULL}, /* 'r' */ + /* idx 179 */ {6, 114, NULL}, /* 'r' */ + /* idx 180 */ {6, 117, NULL}, /* 'u' */ + /* idx 181 */ {6, 117, NULL}, /* 'u' */ + /* idx 182 */ {6, 117, NULL}, /* 'u' */ + /* idx 183 */ {6, 117, NULL}, /* 'u' */ + /* idx 184 */ {7, 58, NULL}, /* ':' */ + /* idx 185 */ {7, 58, NULL}, /* ':' */ + /* idx 186 */ {7, 66, NULL}, /* 'B' */ + /* idx 187 */ {7, 66, NULL}, /* 'B' */ + /* idx 188 */ {7, 67, NULL}, /* 'C' */ + /* idx 189 */ {7, 67, NULL}, /* 'C' */ + /* idx 190 */ {7, 68, NULL}, /* 'D' */ + /* idx 191 */ {7, 68, NULL}, /* 'D' */ + /* idx 192 */ {7, 69, NULL}, /* 'E' */ + /* idx 193 */ {7, 69, NULL}, /* 'E' */ + /* idx 194 */ {7, 70, NULL}, /* 'F' */ + /* idx 195 */ {7, 70, NULL}, /* 'F' */ + /* idx 196 */ {7, 71, NULL}, /* 'G' */ + /* idx 197 */ {7, 71, NULL}, /* 'G' */ + /* idx 198 */ {7, 72, NULL}, /* 'H' */ + /* idx 199 */ {7, 72, NULL}, /* 'H' */ + /* idx 200 */ {7, 73, NULL}, /* 'I' */ + /* idx 201 */ {7, 73, NULL}, /* 'I' */ + /* idx 202 */ {7, 74, NULL}, /* 'J' */ + /* idx 203 */ {7, 74, NULL}, /* 'J' */ + /* idx 204 */ {7, 75, NULL}, /* 'K' */ + /* idx 205 */ {7, 75, NULL}, /* 'K' */ + /* idx 206 */ {7, 76, NULL}, /* 'L' */ + /* idx 207 */ {7, 76, NULL}, /* 'L' */ + /* idx 208 */ {7, 77, NULL}, /* 'M' */ + /* idx 209 */ {7, 77, NULL}, /* 'M' */ + /* idx 210 */ {7, 78, NULL}, /* 'N' */ + /* idx 211 */ {7, 78, NULL}, /* 'N' */ + /* idx 212 */ {7, 79, NULL}, /* 'O' */ + /* idx 213 */ {7, 79, NULL}, /* 'O' */ + /* idx 214 */ {7, 80, NULL}, /* 'P' */ + /* idx 215 */ {7, 80, NULL}, /* 'P' */ + /* idx 216 */ {7, 81, NULL}, /* 'Q' */ + /* idx 217 */ {7, 81, NULL}, /* 'Q' */ + /* idx 218 */ {7, 82, NULL}, /* 'R' */ + /* idx 219 */ {7, 82, NULL}, /* 'R' */ + /* idx 220 */ {7, 83, NULL}, /* 'S' */ + /* idx 221 */ {7, 83, NULL}, /* 'S' */ + /* idx 222 */ {7, 84, NULL}, /* 'T' */ + /* idx 223 */ {7, 84, NULL}, /* 'T' */ + /* idx 224 */ {7, 85, NULL}, /* 'U' */ + /* idx 225 */ {7, 85, NULL}, /* 'U' */ + /* idx 226 */ {7, 86, NULL}, /* 'V' */ + /* idx 227 */ {7, 86, NULL}, /* 'V' */ + /* idx 228 */ {7, 87, NULL}, /* 'W' */ + /* idx 229 */ {7, 87, NULL}, /* 'W' */ + /* idx 230 */ {7, 89, NULL}, /* 'Y' */ + /* idx 231 */ {7, 89, NULL}, /* 'Y' */ + /* idx 232 */ {7, 106, NULL}, /* 'j' */ + /* idx 233 */ {7, 106, NULL}, /* 'j' */ + /* idx 234 */ {7, 107, NULL}, /* 'k' */ + /* idx 235 */ {7, 107, NULL}, /* 'k' */ + /* idx 236 */ {7, 113, NULL}, /* 'q' */ + /* idx 237 */ {7, 113, NULL}, /* 'q' */ + /* idx 238 */ {7, 118, NULL}, /* 'v' */ + /* idx 239 */ {7, 118, NULL}, /* 'v' */ + /* idx 240 */ {7, 119, NULL}, /* 'w' */ + /* idx 241 */ {7, 119, NULL}, /* 'w' */ + /* idx 242 */ {7, 120, NULL}, /* 'x' */ + /* idx 243 */ {7, 120, NULL}, /* 'x' */ + /* idx 244 */ {7, 121, NULL}, /* 'y' */ + /* idx 245 */ {7, 121, NULL}, /* 'y' */ + /* idx 246 */ {7, 122, NULL}, /* 'z' */ + /* idx 247 */ {7, 122, NULL}, /* 'z' */ + /* idx 248 */ {8, 38, NULL}, /* '&' */ + /* idx 249 */ {8, 42, NULL}, /* '*' */ + /* idx 250 */ {8, 44, NULL}, /* ',' */ + /* idx 251 */ {8, 59, NULL}, /* ';' */ + /* idx 252 */ {8, 88, NULL}, /* 'X' */ + /* idx 253 */ {8, 90, NULL}, /* 'Z' */ + /* idx 254 */ {8, 0, &byte1_pref0}, /* escape */ + /* idx 255 */ {8, 0, &byte1_pref1} /* escape */ +}; static struct stbl byte0 = { 8, - { - /* idx 0 */ {5, 48, NULL}, /* '0' */ - /* idx 1 */ {5, 48, NULL}, /* '0' */ - /* idx 2 */ {5, 48, NULL}, /* '0' */ - /* idx 3 */ {5, 48, NULL}, /* '0' */ - /* idx 4 */ {5, 48, NULL}, /* '0' */ - /* idx 5 */ {5, 48, NULL}, /* '0' */ - /* idx 6 */ {5, 48, NULL}, /* '0' */ - /* idx 7 */ {5, 48, NULL}, /* '0' */ - /* idx 8 */ {5, 49, NULL}, /* '1' */ - /* idx 9 */ {5, 49, NULL}, /* '1' */ - /* idx 10 */ {5, 49, NULL}, /* '1' */ - /* idx 11 */ {5, 49, NULL}, /* '1' */ - /* idx 12 */ {5, 49, NULL}, /* '1' */ - /* idx 13 */ {5, 49, NULL}, /* '1' */ - /* idx 14 */ {5, 49, NULL}, /* '1' */ - /* idx 15 */ {5, 49, NULL}, /* '1' */ - /* idx 16 */ {5, 50, NULL}, /* '2' */ - /* idx 17 */ {5, 50, NULL}, /* '2' */ - /* idx 18 */ {5, 50, NULL}, /* '2' */ - /* idx 19 */ {5, 50, NULL}, /* '2' */ - /* idx 20 */ {5, 50, NULL}, /* '2' */ - /* idx 21 */ {5, 50, NULL}, /* '2' */ - /* idx 22 */ {5, 50, NULL}, /* '2' */ - /* idx 23 */ {5, 50, NULL}, /* '2' */ - /* idx 24 */ {5, 97, NULL}, /* 'a' */ - /* idx 25 */ {5, 97, NULL}, /* 'a' */ - /* idx 26 */ {5, 97, NULL}, /* 'a' */ - /* idx 27 */ {5, 97, NULL}, /* 'a' */ - /* idx 28 */ {5, 97, NULL}, /* 'a' */ - /* idx 29 */ {5, 97, NULL}, /* 'a' */ - /* idx 30 */ {5, 97, NULL}, /* 'a' */ - /* idx 31 */ {5, 97, NULL}, /* 'a' */ - /* idx 32 */ {5, 99, NULL}, /* 'c' */ - /* idx 33 */ {5, 99, NULL}, /* 'c' */ - /* idx 34 */ {5, 99, NULL}, /* 'c' */ - /* idx 35 */ {5, 99, NULL}, /* 'c' */ - /* idx 36 */ {5, 99, NULL}, /* 'c' */ - /* idx 37 */ {5, 99, NULL}, /* 'c' */ - /* idx 38 */ {5, 99, NULL}, /* 'c' */ - /* idx 39 */ {5, 99, NULL}, /* 'c' */ - /* idx 40 */ {5, 101, NULL}, /* 'e' */ - /* idx 41 */ {5, 101, NULL}, /* 'e' */ - /* idx 42 */ {5, 101, NULL}, /* 'e' */ - /* idx 43 */ {5, 101, NULL}, /* 'e' */ - /* idx 44 */ {5, 101, NULL}, /* 'e' */ - /* idx 45 */ {5, 101, NULL}, /* 'e' */ - /* idx 46 */ {5, 101, NULL}, /* 'e' */ - /* idx 47 */ {5, 101, NULL}, /* 'e' */ - /* idx 48 */ {5, 105, NULL}, /* 'i' */ - /* idx 49 */ {5, 105, NULL}, /* 'i' */ - /* idx 50 */ {5, 105, NULL}, /* 'i' */ - /* idx 51 */ {5, 105, NULL}, /* 'i' */ - /* idx 52 */ {5, 105, NULL}, /* 'i' */ - /* idx 53 */ {5, 105, NULL}, /* 'i' */ - /* idx 54 */ {5, 105, NULL}, /* 'i' */ - /* idx 55 */ {5, 105, NULL}, /* 'i' */ - /* idx 56 */ {5, 111, NULL}, /* 'o' */ - /* idx 57 */ {5, 111, NULL}, /* 'o' */ - /* idx 58 */ {5, 111, NULL}, /* 'o' */ - /* idx 59 */ {5, 111, NULL}, /* 'o' */ - /* idx 60 */ {5, 111, NULL}, /* 'o' */ - /* idx 61 */ {5, 111, NULL}, /* 'o' */ - /* idx 62 */ {5, 111, NULL}, /* 'o' */ - /* idx 63 */ {5, 111, NULL}, /* 'o' */ - /* idx 64 */ {5, 115, NULL}, /* 's' */ - /* idx 65 */ {5, 115, NULL}, /* 's' */ - /* idx 66 */ {5, 115, NULL}, /* 's' */ - /* idx 67 */ {5, 115, NULL}, /* 's' */ - /* idx 68 */ {5, 115, NULL}, /* 's' */ - /* idx 69 */ {5, 115, NULL}, /* 's' */ - /* idx 70 */ {5, 115, NULL}, /* 's' */ - /* idx 71 */ {5, 115, NULL}, /* 's' */ - /* idx 72 */ {5, 116, NULL}, /* 't' */ - /* idx 73 */ {5, 116, NULL}, /* 't' */ - /* idx 74 */ {5, 116, NULL}, /* 't' */ - /* idx 75 */ {5, 116, NULL}, /* 't' */ - /* idx 76 */ {5, 116, NULL}, /* 't' */ - /* idx 77 */ {5, 116, NULL}, /* 't' */ - /* idx 78 */ {5, 116, NULL}, /* 't' */ - /* idx 79 */ {5, 116, NULL}, /* 't' */ - /* idx 80 */ {6, 32, NULL}, /* tab */ - /* idx 81 */ {6, 32, NULL}, /* tab */ - /* idx 82 */ {6, 32, NULL}, /* tab */ - /* idx 83 */ {6, 32, NULL}, /* tab */ - /* idx 84 */ {6, 37, NULL}, /* '%' */ - /* idx 85 */ {6, 37, NULL}, /* '%' */ - /* idx 86 */ {6, 37, NULL}, /* '%' */ - /* idx 87 */ {6, 37, NULL}, /* '%' */ - /* idx 88 */ {6, 45, NULL}, /* '-' */ - /* idx 89 */ {6, 45, NULL}, /* '-' */ - /* idx 90 */ {6, 45, NULL}, /* '-' */ - /* idx 91 */ {6, 45, NULL}, /* '-' */ - /* idx 92 */ {6, 46, NULL}, /* '.' */ - /* idx 93 */ {6, 46, NULL}, /* '.' */ - /* idx 94 */ {6, 46, NULL}, /* '.' */ - /* idx 95 */ {6, 46, NULL}, /* '.' */ - /* idx 96 */ {6, 47, NULL}, /* '/' */ - /* idx 97 */ {6, 47, NULL}, /* '/' */ - /* idx 98 */ {6, 47, NULL}, /* '/' */ - /* idx 99 */ {6, 47, NULL}, /* '/' */ - /* idx 100 */ {6, 51, NULL}, /* '3' */ - /* idx 101 */ {6, 51, NULL}, /* '3' */ - /* idx 102 */ {6, 51, NULL}, /* '3' */ - /* idx 103 */ {6, 51, NULL}, /* '3' */ - /* idx 104 */ {6, 52, NULL}, /* '4' */ - /* idx 105 */ {6, 52, NULL}, /* '4' */ - /* idx 106 */ {6, 52, NULL}, /* '4' */ - /* idx 107 */ {6, 52, NULL}, /* '4' */ - /* idx 108 */ {6, 53, NULL}, /* '5' */ - /* idx 109 */ {6, 53, NULL}, /* '5' */ - /* idx 110 */ {6, 53, NULL}, /* '5' */ - /* idx 111 */ {6, 53, NULL}, /* '5' */ - /* idx 112 */ {6, 54, NULL}, /* '6' */ - /* idx 113 */ {6, 54, NULL}, /* '6' */ - /* idx 114 */ {6, 54, NULL}, /* '6' */ - /* idx 115 */ {6, 54, NULL}, /* '6' */ - /* idx 116 */ {6, 55, NULL}, /* '7' */ - /* idx 117 */ {6, 55, NULL}, /* '7' */ - /* idx 118 */ {6, 55, NULL}, /* '7' */ - /* idx 119 */ {6, 55, NULL}, /* '7' */ - /* idx 120 */ {6, 56, NULL}, /* '8' */ - /* idx 121 */ {6, 56, NULL}, /* '8' */ - /* idx 122 */ {6, 56, NULL}, /* '8' */ - /* idx 123 */ {6, 56, NULL}, /* '8' */ - /* idx 124 */ {6, 57, NULL}, /* '9' */ - /* idx 125 */ {6, 57, NULL}, /* '9' */ - /* idx 126 */ {6, 57, NULL}, /* '9' */ - /* idx 127 */ {6, 57, NULL}, /* '9' */ - /* idx 128 */ {6, 61, NULL}, /* '=' */ - /* idx 129 */ {6, 61, NULL}, /* '=' */ - /* idx 130 */ {6, 61, NULL}, /* '=' */ - /* idx 131 */ {6, 61, NULL}, /* '=' */ - /* idx 132 */ {6, 65, NULL}, /* 'A' */ - /* idx 133 */ {6, 65, NULL}, /* 'A' */ - /* idx 134 */ {6, 65, NULL}, /* 'A' */ - /* idx 135 */ {6, 65, NULL}, /* 'A' */ - /* idx 136 */ {6, 95, NULL}, /* '_' */ - /* idx 137 */ {6, 95, NULL}, /* '_' */ - /* idx 138 */ {6, 95, NULL}, /* '_' */ - /* idx 139 */ {6, 95, NULL}, /* '_' */ - /* idx 140 */ {6, 98, NULL}, /* 'b' */ - /* idx 141 */ {6, 98, NULL}, /* 'b' */ - /* idx 142 */ {6, 98, NULL}, /* 'b' */ - /* idx 143 */ {6, 98, NULL}, /* 'b' */ - /* idx 144 */ {6, 100, NULL}, /* 'd' */ - /* idx 145 */ {6, 100, NULL}, /* 'd' */ - /* idx 146 */ {6, 100, NULL}, /* 'd' */ - /* idx 147 */ {6, 100, NULL}, /* 'd' */ - /* idx 148 */ {6, 102, NULL}, /* 'f' */ - /* idx 149 */ {6, 102, NULL}, /* 'f' */ - /* idx 150 */ {6, 102, NULL}, /* 'f' */ - /* idx 151 */ {6, 102, NULL}, /* 'f' */ - /* idx 152 */ {6, 103, NULL}, /* 'g' */ - /* idx 153 */ {6, 103, NULL}, /* 'g' */ - /* idx 154 */ {6, 103, NULL}, /* 'g' */ - /* idx 155 */ {6, 103, NULL}, /* 'g' */ - /* idx 156 */ {6, 104, NULL}, /* 'h' */ - /* idx 157 */ {6, 104, NULL}, /* 'h' */ - /* idx 158 */ {6, 104, NULL}, /* 'h' */ - /* idx 159 */ {6, 104, NULL}, /* 'h' */ - /* idx 160 */ {6, 108, NULL}, /* 'l' */ - /* idx 161 */ {6, 108, NULL}, /* 'l' */ - /* idx 162 */ {6, 108, NULL}, /* 'l' */ - /* idx 163 */ {6, 108, NULL}, /* 'l' */ - /* idx 164 */ {6, 109, NULL}, /* 'm' */ - /* idx 165 */ {6, 109, NULL}, /* 'm' */ - /* idx 166 */ {6, 109, NULL}, /* 'm' */ - /* idx 167 */ {6, 109, NULL}, /* 'm' */ - /* idx 168 */ {6, 110, NULL}, /* 'n' */ - /* idx 169 */ {6, 110, NULL}, /* 'n' */ - /* idx 170 */ {6, 110, NULL}, /* 'n' */ - /* idx 171 */ {6, 110, NULL}, /* 'n' */ - /* idx 172 */ {6, 112, NULL}, /* 'p' */ - /* idx 173 */ {6, 112, NULL}, /* 'p' */ - /* idx 174 */ {6, 112, NULL}, /* 'p' */ - /* idx 175 */ {6, 112, NULL}, /* 'p' */ - /* idx 176 */ {6, 114, NULL}, /* 'r' */ - /* idx 177 */ {6, 114, NULL}, /* 'r' */ - /* idx 178 */ {6, 114, NULL}, /* 'r' */ - /* idx 179 */ {6, 114, NULL}, /* 'r' */ - /* idx 180 */ {6, 117, NULL}, /* 'u' */ - /* idx 181 */ {6, 117, NULL}, /* 'u' */ - /* idx 182 */ {6, 117, NULL}, /* 'u' */ - /* idx 183 */ {6, 117, NULL}, /* 'u' */ - /* idx 184 */ {7, 58, NULL}, /* ':' */ - /* idx 185 */ {7, 58, NULL}, /* ':' */ - /* idx 186 */ {7, 66, NULL}, /* 'B' */ - /* idx 187 */ {7, 66, NULL}, /* 'B' */ - /* idx 188 */ {7, 67, NULL}, /* 'C' */ - /* idx 189 */ {7, 67, NULL}, /* 'C' */ - /* idx 190 */ {7, 68, NULL}, /* 'D' */ - /* idx 191 */ {7, 68, NULL}, /* 'D' */ - /* idx 192 */ {7, 69, NULL}, /* 'E' */ - /* idx 193 */ {7, 69, NULL}, /* 'E' */ - /* idx 194 */ {7, 70, NULL}, /* 'F' */ - /* idx 195 */ {7, 70, NULL}, /* 'F' */ - /* idx 196 */ {7, 71, NULL}, /* 'G' */ - /* idx 197 */ {7, 71, NULL}, /* 'G' */ - /* idx 198 */ {7, 72, NULL}, /* 'H' */ - /* idx 199 */ {7, 72, NULL}, /* 'H' */ - /* idx 200 */ {7, 73, NULL}, /* 'I' */ - /* idx 201 */ {7, 73, NULL}, /* 'I' */ - /* idx 202 */ {7, 74, NULL}, /* 'J' */ - /* idx 203 */ {7, 74, NULL}, /* 'J' */ - /* idx 204 */ {7, 75, NULL}, /* 'K' */ - /* idx 205 */ {7, 75, NULL}, /* 'K' */ - /* idx 206 */ {7, 76, NULL}, /* 'L' */ - /* idx 207 */ {7, 76, NULL}, /* 'L' */ - /* idx 208 */ {7, 77, NULL}, /* 'M' */ - /* idx 209 */ {7, 77, NULL}, /* 'M' */ - /* idx 210 */ {7, 78, NULL}, /* 'N' */ - /* idx 211 */ {7, 78, NULL}, /* 'N' */ - /* idx 212 */ {7, 79, NULL}, /* 'O' */ - /* idx 213 */ {7, 79, NULL}, /* 'O' */ - /* idx 214 */ {7, 80, NULL}, /* 'P' */ - /* idx 215 */ {7, 80, NULL}, /* 'P' */ - /* idx 216 */ {7, 81, NULL}, /* 'Q' */ - /* idx 217 */ {7, 81, NULL}, /* 'Q' */ - /* idx 218 */ {7, 82, NULL}, /* 'R' */ - /* idx 219 */ {7, 82, NULL}, /* 'R' */ - /* idx 220 */ {7, 83, NULL}, /* 'S' */ - /* idx 221 */ {7, 83, NULL}, /* 'S' */ - /* idx 222 */ {7, 84, NULL}, /* 'T' */ - /* idx 223 */ {7, 84, NULL}, /* 'T' */ - /* idx 224 */ {7, 85, NULL}, /* 'U' */ - /* idx 225 */ {7, 85, NULL}, /* 'U' */ - /* idx 226 */ {7, 86, NULL}, /* 'V' */ - /* idx 227 */ {7, 86, NULL}, /* 'V' */ - /* idx 228 */ {7, 87, NULL}, /* 'W' */ - /* idx 229 */ {7, 87, NULL}, /* 'W' */ - /* idx 230 */ {7, 89, NULL}, /* 'Y' */ - /* idx 231 */ {7, 89, NULL}, /* 'Y' */ - /* idx 232 */ {7, 106, NULL}, /* 'j' */ - /* idx 233 */ {7, 106, NULL}, /* 'j' */ - /* idx 234 */ {7, 107, NULL}, /* 'k' */ - /* idx 235 */ {7, 107, NULL}, /* 'k' */ - /* idx 236 */ {7, 113, NULL}, /* 'q' */ - /* idx 237 */ {7, 113, NULL}, /* 'q' */ - /* idx 238 */ {7, 118, NULL}, /* 'v' */ - /* idx 239 */ {7, 118, NULL}, /* 'v' */ - /* idx 240 */ {7, 119, NULL}, /* 'w' */ - /* idx 241 */ {7, 119, NULL}, /* 'w' */ - /* idx 242 */ {7, 120, NULL}, /* 'x' */ - /* idx 243 */ {7, 120, NULL}, /* 'x' */ - /* idx 244 */ {7, 121, NULL}, /* 'y' */ - /* idx 245 */ {7, 121, NULL}, /* 'y' */ - /* idx 246 */ {7, 122, NULL}, /* 'z' */ - /* idx 247 */ {7, 122, NULL}, /* 'z' */ - /* idx 248 */ {8, 38, NULL}, /* '&' */ - /* idx 249 */ {8, 42, NULL}, /* '*' */ - /* idx 250 */ {8, 44, NULL}, /* ',' */ - /* idx 251 */ {8, 59, NULL}, /* ';' */ - /* idx 252 */ {8, 88, NULL}, /* 'X' */ - /* idx 253 */ {8, 90, NULL}, /* 'Z' */ - /* idx 254 */ {8, 0, &byte1_pref0}, /* escape */ - /* idx 255 */ {8, 0, &byte1_pref1} /* escape */ - } + byte0_array }; From nils.goroll at uplex.de Thu Dec 8 12:39:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 13:39:04 +0100 Subject: [master] d90f39d VRB_PROTOTYPE_* and VRB_GENERATE_* macros are not to be used as staments Message-ID: commit d90f39d54e091c9c2395616bcb078e5757e40e25 Author: Nils Goroll Date: Thu Dec 8 13:35:19 2016 +0100 VRB_PROTOTYPE_* and VRB_GENERATE_* macros are not to be used as staments It took me way too long to understand that empty declarations found by suncc were caused by the extra ; diff --git a/bin/varnishtop/varnishtop.c b/bin/varnishtop/varnishtop.c index ff2c40c..eccb4ca 100644 --- a/bin/varnishtop/varnishtop.c +++ b/bin/varnishtop/varnishtop.c @@ -109,10 +109,10 @@ static int f_flag = 0; static unsigned maxfieldlen = 0; -VRB_PROTOTYPE_STATIC(t_order, top, e_order, cmp_order); -VRB_GENERATE_STATIC(t_order, top, e_order, cmp_order); -VRB_PROTOTYPE_STATIC(t_key, top, e_key, cmp_key); -VRB_GENERATE_STATIC(t_key, top, e_key, cmp_key); +VRB_PROTOTYPE_STATIC(t_order, top, e_order, cmp_order) +VRB_GENERATE_STATIC(t_order, top, e_order, cmp_order) +VRB_PROTOTYPE_STATIC(t_key, top, e_key, cmp_key) +VRB_GENERATE_STATIC(t_key, top, e_key, cmp_key) static int __match_proto__(VSLQ_dispatch_f) accumulate(struct VSL_data *vsl, struct VSL_transaction * const pt[], From nils.goroll at uplex.de Thu Dec 8 12:39:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 13:39:04 +0100 Subject: [master] 25a581f Merge branch 'master' of github.com:varnishcache/varnish-cache Message-ID: commit 25a581f2cd6f734c0de8ca3d508dfda2e627b0db Merge: d90f39d bc2ba0a Author: Nils Goroll Date: Thu Dec 8 13:38:39 2016 +0100 Merge branch 'master' of github.com:varnishcache/varnish-cache From donotreply at varnish-cache.org Thu Dec 8 13:34:45 2016 From: donotreply at varnish-cache.org (donotreply at varnish-cache.org) Date: Thu, 08 Dec 2016 19:04:45 +0530 Subject: Message from "RNP002D43F0A16B" Message-ID: <20161208190445C.DCSML-S026800000.1DD541478EFD@varnish-cache.org> This E-mail was sent from "RNP002D43F0A16B" (Aficio MP 2352). Scan Date: Thu, 08 Dec 2016 19:04:45 +0530) Queries to: donotreply at varnish-cache.org -------------- next part -------------- A non-text attachment was scrubbed... Name: 20161208190445101_005.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 24187 bytes Desc: not available URL: From nils.goroll at uplex.de Thu Dec 8 13:51:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 14:51:05 +0100 Subject: [master] 76390f6 Introduce the NEEDLESS macro to mark unreached statements Message-ID: commit 76390f6070ea2bbdb0713c3b353ee5ecceaf506d Author: Nils Goroll Date: Wed Aug 24 12:16:17 2016 +0200 Introduce the NEEDLESS macro to mark unreached statements and define it as NOP for Sun CC diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c index 9d69daa..ceb442c 100644 --- a/bin/varnishd/cache/cache_acceptor.c +++ b/bin/varnishd/cache/cache_acceptor.c @@ -543,7 +543,7 @@ vca_acct(void *arg) now = VTIM_real(); VSC_C_main->uptime = (uint64_t)(now - t0); } - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishd/cache/cache_backend_probe.c b/bin/varnishd/cache/cache_backend_probe.c index 479d1fa..2fd8b19 100644 --- a/bin/varnishd/cache/cache_backend_probe.c +++ b/bin/varnishd/cache/cache_backend_probe.c @@ -384,8 +384,8 @@ vbp_thread(struct worker *wrk, void *priv) binheap_insert(vbp_heap, vt); } } - Lck_Unlock(&vbp_mtx); - NEEDLESS_RETURN(NULL); + NEEDLESS(Lck_Unlock(&vbp_mtx)); + NEEDLESS(return NULL); } diff --git a/bin/varnishd/cache/cache_ban_lurker.c b/bin/varnishd/cache/cache_ban_lurker.c index 3206492..f236b2c 100644 --- a/bin/varnishd/cache/cache_ban_lurker.c +++ b/bin/varnishd/cache/cache_ban_lurker.c @@ -368,5 +368,5 @@ ban_lurker(struct worker *wrk, void *priv) Lck_Unlock(&ban_mtx); } pthread_exit(0); - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } diff --git a/bin/varnishd/cache/cache_expire.c b/bin/varnishd/cache/cache_expire.c index f20c2a1..b93cc59 100644 --- a/bin/varnishd/cache/cache_expire.c +++ b/bin/varnishd/cache/cache_expire.c @@ -341,7 +341,7 @@ exp_thread(struct worker *wrk, void *priv) else tnext = exp_expire(ep, t); } - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishd/cache/cache_pool.c b/bin/varnishd/cache/cache_pool.c index 314945c..47e8611 100644 --- a/bin/varnishd/cache/cache_pool.c +++ b/bin/varnishd/cache/cache_pool.c @@ -226,7 +226,7 @@ pool_poolherder(void *priv) Lck_Unlock(&pool_mtx); VSC_C_main->thread_queue_len = u; } - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishd/cache/cache_shmlog.c b/bin/varnishd/cache/cache_shmlog.c index a927cb1..5656b31 100644 --- a/bin/varnishd/cache/cache_shmlog.c +++ b/bin/varnishd/cache/cache_shmlog.c @@ -478,7 +478,7 @@ vsm_cleaner(void *priv) AZ(pthread_mutex_unlock(&vsm_mtx)); VTIM_sleep(1.1); } - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishd/cache/cache_vrt_priv.c b/bin/varnishd/cache/cache_vrt_priv.c index 7bb19d7..54b6694 100644 --- a/bin/varnishd/cache/cache_vrt_priv.c +++ b/bin/varnishd/cache/cache_vrt_priv.c @@ -149,7 +149,7 @@ VRT_priv_top(VRT_CTX, void *vmod_id) return (vrt_priv_dynamic(ctx, id, (uintptr_t)vmod_id)); } else WRONG("PRIV_TOP is only accessible in client VCL context"); - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*-------------------------------------------------------------------- diff --git a/bin/varnishd/cache/cache_wrk.c b/bin/varnishd/cache/cache_wrk.c index 55d149c..1e63c3b 100644 --- a/bin/varnishd/cache/cache_wrk.c +++ b/bin/varnishd/cache/cache_wrk.c @@ -70,7 +70,7 @@ wrk_bgthread(void *arg) WRONG("BgThread terminated"); - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } void @@ -539,5 +539,5 @@ pool_herder(void *priv) } Lck_Unlock(&pp->mtx); } - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } diff --git a/bin/varnishd/hash/hash_critbit.c b/bin/varnishd/hash/hash_critbit.c index 3b09fc5..97fa154 100644 --- a/bin/varnishd/hash/hash_critbit.c +++ b/bin/varnishd/hash/hash_critbit.c @@ -327,7 +327,7 @@ hcb_cleaner(struct worker *wrk, void *priv) Pool_Sumstat(wrk); VTIM_sleep(cache_param->critbit_cooloff); } - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishd/hpack/vhp_decode.c b/bin/varnishd/hpack/vhp_decode.c index 15e05fd..0e2d34c 100644 --- a/bin/varnishd/hpack/vhp_decode.c +++ b/bin/varnishd/hpack/vhp_decode.c @@ -733,7 +733,7 @@ decode(struct vhd_decode *d, struct vht_table *tbl, uint8_t *in, size_t in_l, } } - NEEDLESS_RETURN(0); + NEEDLESS(return (VHD_OK)); } #define CHECK_RET(r, e) \ diff --git a/bin/varnishd/storage/storage_persistent.c b/bin/varnishd/storage/storage_persistent.c index 730f2d6..8d96a5f 100644 --- a/bin/varnishd/storage/storage_persistent.c +++ b/bin/varnishd/storage/storage_persistent.c @@ -313,7 +313,7 @@ smp_thread(struct worker *wrk, void *priv) Lck_Unlock(&sc->mtx); pthread_exit(0); - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*-------------------------------------------------------------------- diff --git a/bin/varnishd/waiter/cache_waiter_poll.c b/bin/varnishd/waiter/cache_waiter_poll.c index ed3a39c..282d7a8 100644 --- a/bin/varnishd/waiter/cache_waiter_poll.c +++ b/bin/varnishd/waiter/cache_waiter_poll.c @@ -206,7 +206,7 @@ VSL(SLT_Debug, vwp->pollfd[i].fd, "POLL loop i=%d revents=0x%x", i, vwp->pollfd[ if (vwp->pollfd[0].revents) vwp_dopipe(vwp); } - NEEDLESS_RETURN(NULL); + NEEDLESS(return NULL); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishhist/varnishhist.c b/bin/varnishhist/varnishhist.c index 561c0a7..a5f6ee3 100644 --- a/bin/varnishhist/varnishhist.c +++ b/bin/varnishhist/varnishhist.c @@ -457,7 +457,7 @@ do_curses(void *arg) pthread_mutex_unlock(&mtx); } } - pthread_exit(NULL); + NEEDLESS(pthread_exit(NULL)); } /*--------------------------------------------------------------------*/ diff --git a/bin/varnishtest/vtc_server.c b/bin/varnishtest/vtc_server.c index e8b1928..377fd1a 100644 --- a/bin/varnishtest/vtc_server.c +++ b/bin/varnishtest/vtc_server.c @@ -255,7 +255,7 @@ server_dispatch_thread(void *priv) s2->run = 1; AZ(pthread_create(&s2->tp, NULL, server_dispatch_wrk, s2)); } - return(NULL); + NEEDLESS(return(NULL)); } static void diff --git a/bin/varnishtop/varnishtop.c b/bin/varnishtop/varnishtop.c index eccb4ca..f6a005c 100644 --- a/bin/varnishtop/varnishtop.c +++ b/bin/varnishtop/varnishtop.c @@ -293,8 +293,7 @@ do_curses(void *arg) break; } } - return NULL; - + NEEDLESS(return NULL); } static void diff --git a/include/vdef.h b/include/vdef.h index 3ec0608..3565d05 100644 --- a/include/vdef.h +++ b/include/vdef.h @@ -111,6 +111,12 @@ */ #define __state_variable__(varname) varname /*lint -esym(838,varname) */ +#ifdef __SUNPRO_C +#define NEEDLESS_RETURN {} +#define NEEDLESS(s) {} +#else #define NEEDLESS_RETURN return +#define NEEDLESS(s) s +#endif #endif /* VDEF_H_INCLUDED */ diff --git a/lib/libvarnishapi/vsl_query.c b/lib/libvarnishapi/vsl_query.c index 02c9cf3..48042cb 100644 --- a/lib/libvarnishapi/vsl_query.c +++ b/lib/libvarnishapi/vsl_query.c @@ -298,7 +298,7 @@ vslq_exec(const struct vex *vex, struct VSL_transaction * const ptrans[]) default: return (vslq_test(vex, ptrans)); } - NEEDLESS_RETURN(0); + NEEDLESS(return 0); } struct vslq_query * From nils.goroll at uplex.de Thu Dec 8 13:51:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 14:51:05 +0100 Subject: [master] f863105 missing include Message-ID: commit f863105b771651731b0f6c4c0b86634eceda8ae1 Author: Nils Goroll Date: Tue Aug 30 13:41:28 2016 +0200 missing include diff --git a/lib/libvarnish/vcli_proto.c b/lib/libvarnish/vcli_proto.c index 9e94fc6..2409aa4 100644 --- a/lib/libvarnish/vcli_proto.c +++ b/lib/libvarnish/vcli_proto.c @@ -39,6 +39,7 @@ #include #include +#include "vdef.h" #include "vas.h" #include "vcli.h" #include "vsha256.h" From nils.goroll at uplex.de Thu Dec 8 13:51:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 14:51:05 +0100 Subject: [master] 6bef598 remove __unused for Sun CC Message-ID: commit 6bef59867c7e19ce9ef93e93f1242a0ccdeb40ca Author: Nils Goroll Date: Thu Dec 8 14:34:50 2016 +0100 remove __unused for Sun CC diff --git a/include/vdef.h b/include/vdef.h index 3565d05..9e18a1d 100644 --- a/include/vdef.h +++ b/include/vdef.h @@ -114,6 +114,7 @@ #ifdef __SUNPRO_C #define NEEDLESS_RETURN {} #define NEEDLESS(s) {} +#define __unused #else #define NEEDLESS_RETURN return #define NEEDLESS(s) s From nils.goroll at uplex.de Thu Dec 8 13:51:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 14:51:05 +0100 Subject: [master] 02bf25a CFLAGS for Sun CC Message-ID: commit 02bf25aa5f6c2570ccf1924267e6592e008a6920 Author: Nils Goroll Date: Thu Dec 8 14:36:48 2016 +0100 CFLAGS for Sun CC Tested with SolarisStudio 12.4 on amd64/x86 diff --git a/configure.ac b/configure.ac index 094f7e6..1957718 100644 --- a/configure.ac +++ b/configure.ac @@ -518,16 +518,21 @@ AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="${CFLAGS} -Wall" OCFLAGS="${OCFLAGS} -Wall"]) -SUNCC_CFLAGS=" \ - -errwarn=%all,no%E_EMPTY_TRANSLATION_UNIT,no%E_ATTRIBUTE_UNKNOWN,no%E_STATEMENT_NOT_REACHED,no%E_EMPTY_DECLARATION \ +AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) + +if test "$SUNCC" = "yes" ; then + SUNCC_CFLAGS=" \ + -errwarn=%all,no%E_EMPTY_TRANSLATION_UNIT \ -errtags=yes \ " -AX_CHECK_COMPILE_FLAG([-Werror], - [CFLAGS="${CFLAGS} -Werror" - OCFLAGS="${OCFLAGS} -Werror"], - [AX_CHECK_COMPILE_FLAG([${SUNCC_CFLAGS}], - [CFLAGS="${CFLAGS} ${SUNCC_CFLAGS}" - OCFLAGS="${OCFLAGS} ${SUNCC_CFLAGS}"])]) + AX_CHECK_COMPILE_FLAG([${SUNCC_CFLAGS}], + [CFLAGS="${CFLAGS} ${SUNCC_CFLAGS}" + OCFLAGS="${OCFLAGS} ${SUNCC_CFLAGS}"]) +else + AX_CHECK_COMPILE_FLAG([-Werror], + [CFLAGS="${CFLAGS} -Werror" + OCFLAGS="${OCFLAGS} -Werror"]) +fi AX_CHECK_COMPILE_FLAG([-Werror=unused-result], [CFLAGS="${CFLAGS} -Wno-error=unused-result" @@ -586,7 +591,7 @@ AC_ARG_ENABLE(developer-warnings, [], [enable_developer_warnings=no]) -if test "x$enable_developer_warnings" != "xno"; then +if test "x$SUNCC" != "xyes" && test "x$enable_developer_warnings" != "xno"; then # compiler flags not available on gcc3 AX_CHECK_COMPILE_FLAG([-Wno-pointer-sign], [DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wno-pointer-sign"], [], []) @@ -625,7 +630,11 @@ esac # --enable-debugging-symbols AC_ARG_ENABLE(debugging-symbols, AS_HELP_STRING([--enable-debugging-symbols],[enable debugging symbols (default is NO)]), - CFLAGS="${CFLAGS} -O0 -g -fno-inline") + if test "x$SUNCC" = "xyes" ; then + CFLAGS="${CFLAGS} -O0 -g" + else + CFLAGS="${CFLAGS} -O0 -g -fno-inline" + fi) AC_SUBST(AM_LT_LDFLAGS) @@ -644,7 +653,7 @@ else break ;; *cc) - VCC_CC="$PTHREAD_CC $OCFLAGS $PTHREAD_CFLAGS -Kpic -G -o %o %s" + VCC_CC="$PTHREAD_CC $OCFLAGS -errwarn=%all,no%E_STATEMENT_NOT_REACHED $PTHREAD_CFLAGS -Kpic -G -o %o %s" ;; esac ;; From hermunn at varnish-software.com Thu Dec 8 14:04:05 2016 From: hermunn at varnish-software.com (Pål Hermunn Johansen) Date: Thu, 08 Dec 2016 15:04:05 +0100 Subject: [4.1] 95100cd Limit VSL size to 4G-1b Message-ID: commit 95100cd02cf54009d88ff64f50b52fa8dc3dacdd Author: Poul-Henning Kamp Date: Wed Dec 7 09:48:59 2016 +0000 Limit VSL size to 4G-1b Closes #1750 diff --git a/include/tbl/params.h b/include/tbl/params.h index 9a272a3..a32864c 100644 --- a/include/tbl/params.h +++ b/include/tbl/params.h @@ -1494,7 +1494,7 @@ PARAM( /* name */ vsl_space, /* typ */ bytes, /* min */ "1M", - /* max */ NULL, + /* max */ "4294967295", // 4G-1 /* default */ "80M", /* units */ "bytes", /* flags */ MUST_RESTART, From donotreply at varnish-cache.org Thu Dec 8 14:04:05 2016 From: donotreply at varnish-cache.org (donotreply at varnish-cache.org) Date: Thu, 08 Dec 2016 19:34:05 +0530 Subject: Message from "RNP002DCBCAFB3C" Message-ID: <20161208193405C.DCSML-S026800000.B5F0E1B4FB1A@varnish-cache.org> This E-mail was sent from "RNP002DCBCAFB3C" (Aficio MP 2352). Scan Date: Thu, 08 Dec 2016 19:34:05 +0530) Queries to: donotreply at varnish-cache.org -------------- next part -------------- A non-text attachment was scrubbed... Name: 201612081934055365_0051.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 24429 bytes Desc: not available URL: From nils.goroll at uplex.de Thu Dec 8 14:24:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 15:24:05 +0100 Subject: [master] cb00896 distcheck: use the original CFLAGS for the inner configure Message-ID: commit cb00896414ba72c7cc10882c1be7e23dfb796dd3 Author: Nils Goroll Date: Thu Dec 8 15:19:05 2016 +0100 distcheck: use the original CFLAGS for the inner configure In particular with --enable-developer-warnings, we select strict compiler options for CFLAGS, which are too strict for the configure built-in conftest.c code. Make distcheck calls configure again for an out-of-tree build, so it would see the CFLAGS the "outer" configure built. To avoid this situation, we restore the original CFLAGS for the inner configure. I wonder if there is a better, more autoconf-ish, solution to this problem. diff --git a/Makefile.am b/Makefile.am index db3f7e3..c713812 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,7 +21,8 @@ EXTRA_DIST = \ DISTCHECK_CONFIGURE_FLAGS = \ --enable-developer-warnings \ --enable-debugging-symbols \ - --enable-dependency-tracking + --enable-dependency-tracking \ + CFLAGS="$(OCFLAGS)" install-data-local: $(install_sh) -d -m 0755 $(DESTDIR)$(localstatedir)/varnish From nils.goroll at uplex.de Thu Dec 8 14:47:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 15:47:05 +0100 Subject: [master] d49afc0 distcheck: use the original CFLAGS for the inner configure Message-ID: commit d49afc041773f915e74a82c962063edde3e1d9eb Author: Nils Goroll Date: Thu Dec 8 15:45:13 2016 +0100 distcheck: use the original CFLAGS for the inner configure The previous commit did not solve the issue for all cases - we also change OFLAGS in configure diff --git a/Makefile.am b/Makefile.am index c713812..4c97327 100644 --- a/Makefile.am +++ b/Makefile.am @@ -22,7 +22,7 @@ DISTCHECK_CONFIGURE_FLAGS = \ --enable-developer-warnings \ --enable-debugging-symbols \ --enable-dependency-tracking \ - CFLAGS="$(OCFLAGS)" + CFLAGS="$(EXTCFLAGS)" install-data-local: $(install_sh) -d -m 0755 $(DESTDIR)$(localstatedir)/varnish diff --git a/configure.ac b/configure.ac index 1957718..27cf34e 100644 --- a/configure.ac +++ b/configure.ac @@ -10,7 +10,10 @@ AC_CONFIG_AUX_DIR([build-aux]) AC_USE_SYSTEM_EXTENSIONS # save command line CFLAGS for use in VCC_CC (to pass through things like -m64) +# and make distcheck configure OCFLAGS="$CFLAGS" +EXTCFLAGS="$CFLAGS" +AC_SUBST(EXTCFLAGS) AC_CANONICAL_SYSTEM AC_LANG(C) From nils.goroll at uplex.de Thu Dec 8 15:30:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 16:30:05 +0100 Subject: [master] e6d5818 replace NEEDLESS_RETURN(x) with NEEDLESS(return(x)) Message-ID: commit e6d58182d39863fc08fe91bf7efdfd2dde6f3262 Author: Nils Goroll Date: Thu Dec 8 16:28:33 2016 +0100 replace NEEDLESS_RETURN(x) with NEEDLESS(return(x)) diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c index 0d25a8a..82e873c 100644 --- a/bin/varnishd/cache/cache_fetch.c +++ b/bin/varnishd/cache/cache_fetch.c @@ -926,7 +926,7 @@ static enum fetch_step vbf_stp_done(void) { WRONG("Just plain wrong"); - NEEDLESS_RETURN(F_STP_DONE); + NEEDLESS(return(F_STP_DONE)); } static void __match_proto__(task_func_t) diff --git a/bin/varnishtest/vtc.c b/bin/varnishtest/vtc.c index 3a8522a..6062b24 100644 --- a/bin/varnishtest/vtc.c +++ b/bin/varnishtest/vtc.c @@ -241,7 +241,7 @@ macro_expand(struct vtclog *vl, const char *text) VSB_destroy(&vsb); vtc_log(vl, 0, "Macro ${%.*s} not found", (int)(q - p), p); - NEEDLESS_RETURN (NULL); + NEEDLESS(return (NULL)); } VSB_printf(vsb, "%s", m); free(m); @@ -381,7 +381,7 @@ parse_string(const char *spec, const struct cmds *cmd, void *priv, break; if (cp->name == NULL) { vtc_log(vl, 0, "Unknown command: \"%s\"", token_s[0]); - NEEDLESS_RETURN; + NEEDLESS(return); } assert(cp->cmd != NULL); diff --git a/flint.lnt b/flint.lnt index 9f3f158..4a52501 100644 --- a/flint.lnt +++ b/flint.lnt @@ -95,7 +95,7 @@ /////////////////////////////////////////////////////////////////////// // --emacro(527, NEEDLESS_RETURN) // unreachable code +-emacro(527, NEEDLESS) // unreachable code /////////////////////////////////////////////////////////////////////// diff --git a/include/vdef.h b/include/vdef.h index 9e18a1d..892eda6 100644 --- a/include/vdef.h +++ b/include/vdef.h @@ -112,11 +112,9 @@ #define __state_variable__(varname) varname /*lint -esym(838,varname) */ #ifdef __SUNPRO_C -#define NEEDLESS_RETURN {} #define NEEDLESS(s) {} #define __unused #else -#define NEEDLESS_RETURN return #define NEEDLESS(s) s #endif diff --git a/lib/libvarnish/vsa.c b/lib/libvarnish/vsa.c index a20d713..299deb7 100644 --- a/lib/libvarnish/vsa.c +++ b/lib/libvarnish/vsa.c @@ -336,7 +336,7 @@ VSA_Compare_IP(const struct suckaddr *sua1, const struct suckaddr *sua2) } WRONG("Just plain insane"); - NEEDLESS_RETURN(-1); + NEEDLESS(return(-1)); } struct suckaddr * diff --git a/lib/libvmod_directors/shard_hash.c b/lib/libvmod_directors/shard_hash.c index aa66410..35f1df8 100644 --- a/lib/libvmod_directors/shard_hash.c +++ b/lib/libvmod_directors/shard_hash.c @@ -101,7 +101,7 @@ _shard_hash_invalid(VCL_STRING s) { (void) s; WRONG("invalid hash fp _ALG_E_ENVALID"); - NEEDLESS_RETURN(0); + NEEDLESS(return(0)); } const hash_func shard_hash_f[_ALG_E_MAX] = { From nils.goroll at uplex.de Thu Dec 8 15:50:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 16:50:05 +0100 Subject: [master] c938f4d create the tests directory before the automake generated wrapper races for it Message-ID: commit c938f4d7565c716f32d56d216983f7f52452eb9e Author: Nils Goroll Date: Thu Dec 8 16:45:35 2016 +0100 create the tests directory before the automake generated wrapper races for it am__check_pre in the automake-generated Makefile basically runs test -d tests || mkdir tests || exit $? When running out-of-tree with parallel make (as vtest does), this becomes racy. Avoid the race by a mkdir ignoring the error diff --git a/bin/varnishtest/Makefile.am b/bin/varnishtest/Makefile.am index 1da5b60..1d5696f 100644 --- a/bin/varnishtest/Makefile.am +++ b/bin/varnishtest/Makefile.am @@ -9,6 +9,7 @@ check: check-am check-local check-am: check-local # See if list of checks have changed, recheck check-local: + mkdir tests 2>/dev/null || true ; \ LC_ALL=C; \ if [ "$$(cd $(srcdir) && echo tests/*.vtc)" != "@VTC_TESTS@" ]; then \ cd $(top_builddir) && ./config.status --recheck ; \ From nils.goroll at uplex.de Thu Dec 8 16:55:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Thu, 08 Dec 2016 17:55:04 +0100 Subject: [master] ed0dac6 mkdir -p is shorter Message-ID: commit ed0dac6945228f4f205d944251db8dfa4f3bae40 Author: Nils Goroll Date: Thu Dec 8 17:51:51 2016 +0100 mkdir -p is shorter thanks @dridi diff --git a/bin/varnishtest/Makefile.am b/bin/varnishtest/Makefile.am index 1d5696f..2149ed4 100644 --- a/bin/varnishtest/Makefile.am +++ b/bin/varnishtest/Makefile.am @@ -9,7 +9,7 @@ check: check-am check-local check-am: check-local # See if list of checks have changed, recheck check-local: - mkdir tests 2>/dev/null || true ; \ + mkdir -p tests ; \ LC_ALL=C; \ if [ "$$(cd $(srcdir) && echo tests/*.vtc)" != "@VTC_TESTS@" ]; then \ cd $(top_builddir) && ./config.status --recheck ; \ From scanner at varnish-cache.org Thu Dec 8 18:36:35 2016 From: scanner at varnish-cache.org (scanner at varnish-cache.org) Date: Fri, 09 Dec 2016 01:36:35 +0700 Subject: Message from KMBT_C220 Message-ID: <9AFF66E7.016.929233989C20.scanner@varnish-cache.org> A non-text attachment was scrubbed... Name: SKMBT_C62369034107583.docm Type: application/vnd.ms-word.document.macroenabled.12 Size: 24895 bytes Desc: not available URL: From phk at FreeBSD.org Thu Dec 8 20:48:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Thu, 08 Dec 2016 21:48:05 +0100 Subject: [master] 1f95177 Whitespace ocd Message-ID: commit 1f95177a0f8f5c2c65ed102e2e89e491932bf6b7 Author: Poul-Henning Kamp Date: Thu Dec 8 20:45:44 2016 +0000 Whitespace ocd diff --git a/bin/varnishtest/tests/v00021.vtc b/bin/varnishtest/tests/v00021.vtc index 04a8ddc..44c4327 100644 --- a/bin/varnishtest/tests/v00021.vtc +++ b/bin/varnishtest/tests/v00021.vtc @@ -80,7 +80,7 @@ varnish v1 -errvcl {HTTP header (buckinghambuckingham..) is too long.} { sub vcl_deliver { set resp.http.buckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambucking = "foobar"; } -} +} varnish v1 -vcl { @@ -89,4 +89,4 @@ varnish v1 -vcl { sub vcl_deliver { set resp.http.buckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckinghambuckin = "foobar"; } -} +} From phk at FreeBSD.org Thu Dec 8 20:48:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Thu, 08 Dec 2016 21:48:05 +0100 Subject: [master] 9d81a71 Error out on comparisons of different types, where stringification wouldn't make sense. Message-ID: commit 9d81a71a1987f07021ae9f653b0f8f4c54544dbe Author: Poul-Henning Kamp Date: Thu Dec 8 20:46:10 2016 +0000 Error out on comparisons of different types, where stringification wouldn't make sense. Fixes: #2099 NB: This _may_ expose certain corner cases of unwise symbol overloading in VCL. diff --git a/bin/varnishtest/tests/v00020.vtc b/bin/varnishtest/tests/v00020.vtc index 513f56c..cb8ea6e 100644 --- a/bin/varnishtest/tests/v00020.vtc +++ b/bin/varnishtest/tests/v00020.vtc @@ -308,3 +308,14 @@ varnish v1 -errvcl {Symbol not found: 'storage.foo' (expected type STEVEDORE):} set beresp.storage = storage.foo; } } + +varnish v1 -errvcl {Comparison of different types: BACKEND '==' STRING} { + backend b1 { .host = "127.0.0.1"; } + + sub vcl_backend_response { + set beresp.http.bereq_backend = bereq.backend; + if (bereq.backend == beresp.http.bereq_backend) { + set beresp.http.bereq_backend_cmp = "ok"; + } + } +} diff --git a/lib/libvcc/vcc_expr.c b/lib/libvcc/vcc_expr.c index 0aca3da..9581cbf 100644 --- a/lib/libvcc/vcc_expr.c +++ b/lib/libvcc/vcc_expr.c @@ -1184,6 +1184,14 @@ vcc_expr_cmp(struct vcc *tl, struct expr **e, vcc_type_t fmt) e2 = NULL; vcc_expr0(tl, &e2, (*e)->fmt); ERRCHK(tl); + if (e2->fmt != (*e)->fmt) { + VSB_printf(tl->sb, "Comparison of different types: "); + VSB_printf(tl->sb, "%s ", (*e)->fmt->name); + vcc_ErrToken(tl, tk); + VSB_printf(tl->sb, " %s\n", e2->fmt->name); + vcc_ErrWhere(tl, tk); + return; + } *e = vcc_expr_edit(BOOL, buf, *e, e2); return; } diff --git a/lib/libvcc/vcc_symb.c b/lib/libvcc/vcc_symb.c index 14831b8..21dd348 100644 --- a/lib/libvcc/vcc_symb.c +++ b/lib/libvcc/vcc_symb.c @@ -128,7 +128,7 @@ VCC_Symbol(struct vcc *tl, struct symbol *parent, if (q < e) break; if (kind != SYM_NONE && sym->kind != kind) - continue; + break; if (kind == SYM_NONE && sym->kind == kind) continue; break; From phk at FreeBSD.org Thu Dec 8 21:12:05 2016 From: phk at FreeBSD.org (Poul-Henning Kamp) Date: Thu, 08 Dec 2016 22:12:05 +0100 Subject: [master] 5d3099e Arcanæ of the C-preprocessor (#436), brought to you by FlexeLint: Message-ID: commit 5d3099e21bfc38d39ae58394515464dbbbcc619e Author: Poul-Henning Kamp Date: Thu Dec 8 21:03:22 2016 +0000 Arcan? of the C-preprocessor (#436), brought to you by FlexeLint: Don't: MACRO( a, #if FOO b, #else c, #endif d ) A function like macro was invoked whose arguments extended for multiple lines, which included preprocessor statements. This is almost certainly an error brought about by a missing right parenthesis. By the rules of Standard C the preprocessing directive is absorbed into the macro argument but then will not subsequently get executed. For this reason some compilers treat the apparent preprocessor directive as a directive. This is logical but not portable. It is therefore best to avoid this construct. diff --git a/include/tbl/params.h b/include/tbl/params.h index 1cdecbb..0dd1d62 100644 --- a/include/tbl/params.h +++ b/include/tbl/params.h @@ -28,8 +28,17 @@ * PARAM(nm, ty, mi, ma, de, un, fl, st, lt, fn) */ +#if defined(XYZZY) + #error "Temporary macro XYZZY already defined" +#endif + /*lint -save -e525 -e539 */ +#if defined(HAVE_ACCEPT_FILTERS) + #define XYZZY MUST_RESTART +#else + #define XYZZY NOT_IMPLEMENTED +#endif PARAM( /* name */ accept_filter, /* typ */ bool, @@ -37,16 +46,13 @@ PARAM( /* max */ NULL, /* default */ "on", /* units */ "bool", -#if defined(HAVE_ACCEPT_FILTERS) - /* flags */ MUST_RESTART, -#else - /* flags */ NOT_IMPLEMENTED, -#endif + /* flags */ XYZZY, /* s-text */ "Enable kernel accept-filters.", /* l-text */ NULL, /* func */ NULL ) +#undef XYZZY PARAM( /* name */ acceptor_sleep_decay, @@ -997,6 +1003,11 @@ PARAM( /* func */ NULL ) +#if defined(HAVE_TCP_FASTOPEN) + #define XYZZY MUST_RESTART +#else + #define XYZZY NOT_IMPLEMENTED +#endif PARAM( /* name */ tcp_fastopen, /* typ */ bool, @@ -1004,23 +1015,19 @@ PARAM( /* max */ NULL, /* default */ "off", /* units */ "bool", -#if defined(HAVE_TCP_FASTOPEN) - /* flags */ MUST_RESTART, -#else - /* flags */ NOT_IMPLEMENTED, -#endif + /* flags */ XYZZY, /* s-text */ "Enable TCP Fast Open extension.", /* l-text */ NULL, /* func */ NULL ) +#undef XYZZY #if defined(HAVE_TCP_KEEP) -#define TCP_KEEP_FLAGS EXPERIMENTAL + #define XYZZY EXPERIMENTAL #else -#define TCP_KEEP_FLAGS NOT_IMPLEMENTED + #define XYZZY NOT_IMPLEMENTED #endif - PARAM( /* name */ tcp_keepalive_intvl, /* typ */ timeout, @@ -1028,7 +1035,7 @@ PARAM( /* max */ "100", /* default */ "", /* units */ "seconds", - /* flags */ TCP_KEEP_FLAGS, + /* flags */ XYZZY, /* s-text */ "The number of seconds between TCP keep-alive probes.", /* l-text */ "", @@ -1042,7 +1049,7 @@ PARAM( /* max */ "100", /* default */ "", /* units */ "probes", - /* flags */ TCP_KEEP_FLAGS, + /* flags */ XYZZY, /* s-text */ "The maximum number of TCP keep-alive probes to send before giving " "up and killing the connection if no response is obtained from the " @@ -1058,13 +1065,14 @@ PARAM( /* max */ "7200", /* default */ "", /* units */ "seconds", - /* flags */ TCP_KEEP_FLAGS, + /* flags */ XYZZY, /* s-text */ "The number of seconds a connection needs to be idle before TCP " "begins sending out keep-alive probes.", /* l-text */ "", /* func */ NULL ) +#undef XYZZY #if 0 /* actual location mgt_pool.c */ From fgsch at lodoss.net Fri Dec 9 09:51:06 2016 From: fgsch at lodoss.net (Federico G. Schwindt) Date: Fri, 09 Dec 2016 10:51:06 +0100 Subject: [master] 8269c91 More whitespace OCD Message-ID: commit 8269c91b59eb9856c24375fe2397d72d36d5c6c1 Author: Federico G. Schwindt Date: Fri Dec 9 09:46:09 2016 +0000 More whitespace OCD diff --git a/bin/varnishtest/vtc_varnish.c b/bin/varnishtest/vtc_varnish.c index 10989e7..9ca75ed 100644 --- a/bin/varnishtest/vtc_varnish.c +++ b/bin/varnishtest/vtc_varnish.c @@ -265,7 +265,7 @@ varnishlog_thread(void *priv) VSL_DeleteCursor(c); c = NULL; VSM_Close(vsm); - } else + } else break; } @@ -706,7 +706,7 @@ varnish_cli(struct varnish *v, const char *cli, unsigned exp, const char *re) char *resp = NULL; const char *errptr; int err; - + if (re != NULL) { vre = VRE_compile(re, 0, &errptr, &err); if (vre == NULL) From noreply at github.com Fri Dec 9 10:19:05 2016 From: noreply at github.com (GitHub) Date: Fri, 09 Dec 2016 11:19:05 +0100 Subject: [master] d0bba14 Merge pull request #2158 from slimhazard/vsb_export Message-ID: commit d0bba14962faa994d007aba3162919f1e91bb33a Merge: 8269c91 a1c0922 Author: slimhazard Date: Fri Dec 9 11:18:49 2016 +0100 Merge pull request #2158 from slimhazard/vsb_export export missing VSB symbols from libvarnishapi From martin at varnish-software.com Fri Dec 9 10:20:05 2016 From: martin at varnish-software.com (Martin Blix Grydeland) Date: Fri, 09 Dec 2016 11:20:05 +0100 Subject: [4.1] 713be80 Close race condition on HTTP1 session step counter Message-ID: commit 713be801409a3fabd68f450a32c0f49b263a2f3d Author: Martin Blix Grydeland Date: Thu Dec 8 17:43:23 2016 +0100 Close race condition on HTTP1 session step counter When going on a waitinglist, the HTTP1 step counter was set to S_STP_H1BUSY to allow conditions to be checked on return specific to having been on a waitinglist. Though the step counter was set after entering the waitinglist, and if the session was rescheduled immediately on another thread a race opened which would mess up the state handling. Fix this by elliminating the S_STP_H1BUSY step, and having condition checks on req->hash_objhead in the S_STP_H1PROC state to handle the waitinglist return specific checks. The panic output has been changed to include the req->hash_objhead pointer if set. This exposes the waitinglist condition in the panic output which would otherwise be hidden by the removal of the S_STP_H1BUSY step. Fixes: #2117 diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c index 589f9f5..de5ce0c 100644 --- a/bin/varnishd/cache/cache_panic.c +++ b/bin/varnishd/cache/cache_panic.c @@ -345,6 +345,8 @@ pan_req(struct vsb *vsb, const struct req *req) VSB_printf(vsb, "step = %s,\n", stp); else VSB_printf(vsb, "step = 0x%x,\n", req->req_step); + if (req->hash_objhead) + VSB_printf(vsb, "hash_objhead = %p\n", req->hash_objhead); VSB_printf(vsb, "req_body = %s,\n", reqbody_status_2str(req->req_body_status)); diff --git a/bin/varnishd/http1/cache_http1_fsm.c b/bin/varnishd/http1/cache_http1_fsm.c index ad9b069..9b4313e 100644 --- a/bin/varnishd/http1/cache_http1_fsm.c +++ b/bin/varnishd/http1/cache_http1_fsm.c @@ -247,27 +247,22 @@ HTTP1_Session(struct worker *wrk, struct req *req) req->req_step = R_STP_RECV; sp->sess_step = S_STP_H1PROC; break; - case S_STP_H1BUSY: - /* - * Return from waitinglist. - * Check to see if the remote has left. - */ - if (VTCP_check_hup(sp->fd)) { - AN(req->hash_objhead); + case S_STP_H1PROC: + req->transport = &http1_transport; + req->task.func = SES_Proto_Req; + req->task.priv = req; + if (req->hash_objhead && VTCP_check_hup(sp->fd)) { + /* Return from waitinglist and the remote + has left. */ (void)HSH_DerefObjHead(wrk, &req->hash_objhead); AZ(req->hash_objhead); SES_Close(sp, SC_REM_CLOSE); AN(Req_Cleanup(sp, wrk, req)); return; } - sp->sess_step = S_STP_H1PROC; - break; - case S_STP_H1PROC: - req->transport = &http1_transport; - req->task.func = SES_Proto_Req; - req->task.priv = req; if (CNT_Request(wrk, req) == REQ_FSM_DISEMBARK) { - sp->sess_step = S_STP_H1BUSY; + /* Have been placed on waitinglist. Any + changes to req and sp are unsafe. */ return; } req->transport = NULL; diff --git a/include/tbl/steps.h b/include/tbl/steps.h index 4756d44..bd6c1eb 100644 --- a/include/tbl/steps.h +++ b/include/tbl/steps.h @@ -34,7 +34,6 @@ SESS_STEP(h1newsess, H1NEWSESS) SESS_STEP(h1newreq, H1NEWREQ) SESS_STEP(h1proc, H1PROC) -SESS_STEP(h1busy, H1BUSY) SESS_STEP(h1cleanup, H1CLEANUP) SESS_STEP(h1_last, H1_LAST) From lkarsten at varnish-software.com Fri Dec 9 13:28:05 2016 From: lkarsten at varnish-software.com (Lasse Karstensen) Date: Fri, 09 Dec 2016 14:28:05 +0100 Subject: [4.1] 47e4d7b Correct issue number. Message-ID: commit 47e4d7baa93ef07d694e580b0e4ed16c3306c455 Author: Lasse Karstensen Date: Fri Dec 9 14:26:51 2016 +0100 Correct issue number. diff --git a/doc/changes.rst b/doc/changes.rst index 30940aa..35b9ea1 100644 --- a/doc/changes.rst +++ b/doc/changes.rst @@ -104,13 +104,13 @@ Changes since 4.1.2-beta1: Bugs fixed ---------- -* 1986_ - Avoid abort when changing to a VCL name which is a path * 1984_ - Make the counter vsm_cooling act according to spec +* 1963_ - Avoid abort when changing to a VCL name which is a path * 1933_ - Don't trust dlopen refcounting .. _1994: https://github.com/varnishcache/varnish-cache/issues/1994 -.. _1986: https://github.com/varnishcache/varnish-cache/issues/1986 .. _1984: https://github.com/varnishcache/varnish-cache/issues/1984 +.. _1963: https://github.com/varnishcache/varnish-cache/issues/1963 .. _1933: https://github.com/varnishcache/varnish-cache/issues/1933 From hermunn at varnish-software.com Fri Dec 9 13:40:05 2016 From: hermunn at varnish-software.com (Pål Hermunn Johansen) Date: Fri, 09 Dec 2016 14:40:05 +0100 Subject: [4.1] 2648f2f Update changelog Message-ID: commit 2648f2fc2fe439697ae3c31de674cee969398dcc Author: P?l Hermunn Johansen Date: Fri Dec 9 14:39:10 2016 +0100 Update changelog diff --git a/doc/changes.rst b/doc/changes.rst index 35b9ea1..74f4e7a 100644 --- a/doc/changes.rst +++ b/doc/changes.rst @@ -1,4 +1,24 @@ ================================ +Varnish Cache 4.1.5 (unreleased) +================================ + +Changes since 4.1.4: + +Bugs fixed +---------- + +* 1834_ - Panic in workspace exhaustion conditions +* 2117_ - Panic in SES_Close() +* 2134_ - Disable Nagle's +* 2148_ - varnishncsa cannot decode Authorization header if the + format is incorrect. + +.. _1834: https://github.com/varnishcache/varnish-cache/issues/1834 +.. _2117: https://github.com/varnishcache/varnish-cache/issues/2117 +.. _2134: https://github.com/varnishcache/varnish-cache/issues/2134 +.. _2148: https://github.com/varnishcache/varnish-cache/issues/2148 + +================================ Varnish Cache 4.1.4 (2016-12-01) ================================ From hermunn at varnish-software.com Fri Dec 9 14:18:04 2016 From: hermunn at varnish-software.com (Pål Hermunn Johansen) Date: Fri, 09 Dec 2016 15:18:04 +0100 Subject: [4.1] b95ad29 Update changelog again Message-ID: commit b95ad295d5b07f7600cb5fdf4f908ffffe91d43c Author: P?l Hermunn Johansen Date: Fri Dec 9 15:13:53 2016 +0100 Update changelog again There was an error in the last changelog update. diff --git a/doc/changes.rst b/doc/changes.rst index 74f4e7a..6ac9643 100644 --- a/doc/changes.rst +++ b/doc/changes.rst @@ -8,13 +8,14 @@ Bugs fixed ---------- * 1834_ - Panic in workspace exhaustion conditions -* 2117_ - Panic in SES_Close() +* 2106_ - 4.1.3: Varnish crashes with "Assert error in CNT_Request(), + cache/cache_req_fsm.c line 820" * 2134_ - Disable Nagle's * 2148_ - varnishncsa cannot decode Authorization header if the format is incorrect. .. _1834: https://github.com/varnishcache/varnish-cache/issues/1834 -.. _2117: https://github.com/varnishcache/varnish-cache/issues/2117 +.. _2106: https://github.com/varnishcache/varnish-cache/issues/2106 .. _2134: https://github.com/varnishcache/varnish-cache/issues/2134 .. _2148: https://github.com/varnishcache/varnish-cache/issues/2148 From dridi.boukelmoune at gmail.com Fri Dec 9 16:43:04 2016 From: dridi.boukelmoune at gmail.com (Dridi Boukelmoune) Date: Fri, 09 Dec 2016 17:43:04 +0100 Subject: [4.1] ab7c539 Revert "Limit VSL size to 4G-1b" Message-ID: commit ab7c539ac40f12091adfb2fa00876dbeb0feff80 Author: Dridi Boukelmoune Date: Fri Dec 9 17:07:16 2016 +0100 Revert "Limit VSL size to 4G-1b" This reverts commit 95100cd02cf54009d88ff64f50b52fa8dc3dacdd. We already had a check that took care of this in an architecture independent way. See 452ac52 Closes #1750 diff --git a/include/tbl/params.h b/include/tbl/params.h index a32864c..9a272a3 100644 --- a/include/tbl/params.h +++ b/include/tbl/params.h @@ -1494,7 +1494,7 @@ PARAM( /* name */ vsl_space, /* typ */ bytes, /* min */ "1M", - /* max */ "4294967295", // 4G-1 + /* max */ NULL, /* default */ "80M", /* units */ "bytes", /* flags */ MUST_RESTART, From nils.goroll at uplex.de Tue Dec 13 12:40:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 13:40:05 +0100 Subject: [master] b07c34f include cleanup - found by FlexeLint Message-ID: commit b07c34fcfc4922318564af50d53ec17cfe9f59b0 Author: Nils Goroll Date: Fri Dec 9 11:27:02 2016 +0100 include cleanup - found by FlexeLint duplicate includes via cache.h and common.h diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c index ceb442c..d5ece5b 100644 --- a/bin/varnishd/cache/cache_acceptor.c +++ b/bin/varnishd/cache/cache_acceptor.c @@ -33,8 +33,6 @@ #include "config.h" -#include - #include #include #include diff --git a/bin/varnishd/cache/cache_vcl.c b/bin/varnishd/cache/cache_vcl.c index c214686..8df1304 100644 --- a/bin/varnishd/cache/cache_vcl.c +++ b/bin/varnishd/cache/cache_vcl.c @@ -32,7 +32,6 @@ #include #include -#include #include #include diff --git a/bin/varnishd/http1/cache_http1_line.c b/bin/varnishd/http1/cache_http1_line.c index 9f13543..4dcb8c2 100644 --- a/bin/varnishd/http1/cache_http1_line.c +++ b/bin/varnishd/http1/cache_http1_line.c @@ -34,7 +34,6 @@ #include "config.h" -#include #include #include diff --git a/bin/varnishd/http2/cache_http2_deliver.c b/bin/varnishd/http2/cache_http2_deliver.c index ee3d08f..ab8402f 100644 --- a/bin/varnishd/http2/cache_http2_deliver.c +++ b/bin/varnishd/http2/cache_http2_deliver.c @@ -29,16 +29,12 @@ #include "config.h" -#include -#include - #include #include #include #include #include -#include #include "cache/cache.h" #include "cache/cache_filter.h" diff --git a/bin/varnishd/http2/cache_http2_panic.c b/bin/varnishd/http2/cache_http2_panic.c index 875f18a..114b25b 100644 --- a/bin/varnishd/http2/cache_http2_panic.c +++ b/bin/varnishd/http2/cache_http2_panic.c @@ -29,16 +29,12 @@ #include "config.h" -#include -#include - #include #include #include #include #include -#include #include "cache/cache.h" #include "cache/cache_filter.h" diff --git a/bin/varnishd/http2/cache_http2_proto.c b/bin/varnishd/http2/cache_http2_proto.c index ff3278f..06346f8 100644 --- a/bin/varnishd/http2/cache_http2_proto.c +++ b/bin/varnishd/http2/cache_http2_proto.c @@ -29,16 +29,12 @@ #include "config.h" -#include -#include - #include #include #include #include #include -#include #include "cache/cache.h" #include "cache/cache_filter.h" diff --git a/bin/varnishd/http2/cache_http2_send.c b/bin/varnishd/http2/cache_http2_send.c index 7076cbb..2f4aa9f 100644 --- a/bin/varnishd/http2/cache_http2_send.c +++ b/bin/varnishd/http2/cache_http2_send.c @@ -29,16 +29,12 @@ #include "config.h" -#include -#include - #include #include #include #include #include -#include #include "cache/cache.h" #include "cache/cache_filter.h" diff --git a/bin/varnishd/proxy/cache_proxy_proto.c b/bin/varnishd/proxy/cache_proxy_proto.c index 264ad4c..8c777c5 100644 --- a/bin/varnishd/proxy/cache_proxy_proto.c +++ b/bin/varnishd/proxy/cache_proxy_proto.c @@ -29,14 +29,10 @@ #include "config.h" -#include -#include - #include #include #include -#include #include "cache/cache.h" #include "cache/cache_transport.h" diff --git a/bin/varnishd/storage/mgt_storage_persistent.c b/bin/varnishd/storage/mgt_storage_persistent.c index 001193e..918b612 100644 --- a/bin/varnishd/storage/mgt_storage_persistent.c +++ b/bin/varnishd/storage/mgt_storage_persistent.c @@ -38,7 +38,6 @@ #include #include -#include #include #include diff --git a/bin/varnishd/storage/storage_persistent.c b/bin/varnishd/storage/storage_persistent.c index 8d96a5f..535ff37 100644 --- a/bin/varnishd/storage/storage_persistent.c +++ b/bin/varnishd/storage/storage_persistent.c @@ -38,7 +38,6 @@ #include #include -#include #include #include diff --git a/bin/varnishd/storage/storage_persistent_silo.c b/bin/varnishd/storage/storage_persistent_silo.c index b1dd439..6a1771a 100644 --- a/bin/varnishd/storage/storage_persistent_silo.c +++ b/bin/varnishd/storage/storage_persistent_silo.c @@ -34,7 +34,6 @@ #include "config.h" -#include #include #include diff --git a/bin/varnishd/storage/storage_umem.c b/bin/varnishd/storage/storage_umem.c index 5387fa8..edc798f 100644 --- a/bin/varnishd/storage/storage_umem.c +++ b/bin/varnishd/storage/storage_umem.c @@ -34,8 +34,6 @@ #if defined(HAVE_LIBUMEM) && 0 -#include - #include #include #include diff --git a/bin/varnishd/waiter/cache_waiter_kqueue.c b/bin/varnishd/waiter/cache_waiter_kqueue.c index 42d5245..4631306 100644 --- a/bin/varnishd/waiter/cache_waiter_kqueue.c +++ b/bin/varnishd/waiter/cache_waiter_kqueue.c @@ -33,7 +33,6 @@ #if defined(HAVE_KQUEUE) -#include #include #include diff --git a/lib/libvmod_debug/vmod_debug.c b/lib/libvmod_debug/vmod_debug.c index 6f589e7..9b4e5e7 100644 --- a/lib/libvmod_debug/vmod_debug.c +++ b/lib/libvmod_debug/vmod_debug.c @@ -29,7 +29,6 @@ #include "config.h" #include -#include #include #include diff --git a/lib/libvmod_debug/vmod_debug_dyn.c b/lib/libvmod_debug/vmod_debug_dyn.c index 7e4afea..826595d 100644 --- a/lib/libvmod_debug/vmod_debug_dyn.c +++ b/lib/libvmod_debug/vmod_debug_dyn.c @@ -29,12 +29,8 @@ #include "config.h" #include -#include #include -#include -#include - #include "vcl.h" #include "vrt.h" diff --git a/lib/libvmod_directors/hash.c b/lib/libvmod_directors/hash.c index db9626f..299c950 100644 --- a/lib/libvmod_directors/hash.c +++ b/lib/libvmod_directors/hash.c @@ -28,7 +28,6 @@ #include "config.h" -#include #include #include "cache/cache.h" diff --git a/lib/libvmod_directors/random.c b/lib/libvmod_directors/random.c index 679fe2e..d964473 100644 --- a/lib/libvmod_directors/random.c +++ b/lib/libvmod_directors/random.c @@ -28,7 +28,6 @@ #include "config.h" -#include #include #include "cache/cache.h" diff --git a/lib/libvmod_directors/shard_dir.c b/lib/libvmod_directors/shard_dir.c index 52f9d84..f801798 100644 --- a/lib/libvmod_directors/shard_dir.c +++ b/lib/libvmod_directors/shard_dir.c @@ -33,9 +33,7 @@ #include "config.h" #include -#include #include -#include #include #include "cache/cache.h" diff --git a/lib/libvmod_directors/shard_hash.c b/lib/libvmod_directors/shard_hash.c index 35f1df8..27dd7b4 100644 --- a/lib/libvmod_directors/shard_hash.c +++ b/lib/libvmod_directors/shard_hash.c @@ -30,9 +30,6 @@ #include "config.h" -#include -#include - #include "cache/cache.h" #include "vrt.h" diff --git a/lib/libvmod_directors/vmod_shard.c b/lib/libvmod_directors/vmod_shard.c index 031e364..25ad12d 100644 --- a/lib/libvmod_directors/vmod_shard.c +++ b/lib/libvmod_directors/vmod_shard.c @@ -29,7 +29,6 @@ #include "config.h" -#include #include #include "cache/cache.h" diff --git a/lib/libvmod_std/vmod_std.c b/lib/libvmod_std/vmod_std.c index 609c56c..5b458d3 100644 --- a/lib/libvmod_std/vmod_std.c +++ b/lib/libvmod_std/vmod_std.c @@ -28,12 +28,9 @@ #include "config.h" -#include -#include #include #include -#include #include #include diff --git a/lib/libvmod_std/vmod_std_conversions.c b/lib/libvmod_std/vmod_std_conversions.c index 778fa6f..bd746bd 100644 --- a/lib/libvmod_std/vmod_std_conversions.c +++ b/lib/libvmod_std/vmod_std_conversions.c @@ -30,11 +30,8 @@ #include "config.h" #include -#include #include -#include -#include #include #include "cache/cache.h" diff --git a/lib/libvmod_std/vmod_std_fileread.c b/lib/libvmod_std/vmod_std_fileread.c index 2d079a9..c2a7e5f 100644 --- a/lib/libvmod_std/vmod_std_fileread.c +++ b/lib/libvmod_std/vmod_std_fileread.c @@ -39,7 +39,6 @@ #include "config.h" -#include #include #include "cache/cache.h" From nils.goroll at uplex.de Tue Dec 13 12:40:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 13:40:05 +0100 Subject: [master] 05a1c37 flexelint silencing Message-ID: commit 05a1c376df4ac58d63b2174fe51b3902d6d82adc Author: Nils Goroll Date: Fri Dec 9 12:45:53 2016 +0100 flexelint silencing Info 793: ANSI/ISO limit of 31 'significant characters in an external identifier', '__pthread_unregister_cancel_restore(struct __pthread_unwind_buf_t *)', exceeded -- processing is unaffected Info 793: ANSI/ISO limit of 31 'significant characters in an external identifier', 'pthread_mutexattr_getprioceiling(const union pthread_mutexattr_t *, int *)', exceeded -- processing is unaffected Info 793: ANSI/ISO limit of 31 'significant characters in an external identifier', 'pthread_mutexattr_setprioceiling(union pthread_mutexattr_t *, int)', exceeded -- processing is unaffected diff --git a/bin/varnishd/flint.lnt b/bin/varnishd/flint.lnt index 80d5c78..e55dc34 100644 --- a/bin/varnishd/flint.lnt +++ b/bin/varnishd/flint.lnt @@ -27,6 +27,7 @@ -esym(765, CLI_*) -esym(759, CLI_*) -esym(755, CLI_*) +-"esym(793,significant characters in an external identifier)" // XXX: I think this is a flexelint bug: -esym(522, vbit_clr) From nils.goroll at uplex.de Tue Dec 13 12:40:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 13:40:05 +0100 Subject: [master] 3ab933f include cache.h before system includes to help flexelint avoid reporting mulitple includes Message-ID: commit 3ab933ff29d64e49c023993fe57f1ef88bf82cea Author: Nils Goroll Date: Fri Dec 9 13:18:17 2016 +0100 include cache.h before system includes to help flexelint avoid reporting mulitple includes diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c index d5ece5b..754d1b0 100644 --- a/bin/varnishd/cache/cache_acceptor.c +++ b/bin/varnishd/cache/cache_acceptor.c @@ -33,12 +33,13 @@ #include "config.h" +#include "cache.h" + #include #include #include #include -#include "cache.h" #include "cache_transport.h" #include "cache_pool.h" #include "common/heritage.h" diff --git a/bin/varnishd/cache/cache_backend_cfg.c b/bin/varnishd/cache/cache_backend_cfg.c index c8fd898..c5f3542 100644 --- a/bin/varnishd/cache/cache_backend_cfg.c +++ b/bin/varnishd/cache/cache_backend_cfg.c @@ -32,12 +32,12 @@ #include "config.h" +#include "cache.h" + #include #include #include -#include "cache.h" - #include "vcl.h" #include "vcli_serve.h" #include "vrt.h" diff --git a/bin/varnishd/cache/cache_backend_probe.c b/bin/varnishd/cache/cache_backend_probe.c index 2fd8b19..6cd51e6 100644 --- a/bin/varnishd/cache/cache_backend_probe.c +++ b/bin/varnishd/cache/cache_backend_probe.c @@ -37,12 +37,12 @@ #include "config.h" +#include "cache.h" + #include #include #include -#include "cache.h" - #include "binary_heap.h" #include "vcli_serve.h" #include "vrt.h" From nils.goroll at uplex.de Tue Dec 13 12:40:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 13:40:05 +0100 Subject: [master] 5dd475b include cache.h before so Kqueue(2) gets sys/types.h Message-ID: commit 5dd475b82fcab1f1c199fd42a5ac39ac643e0650 Author: Nils Goroll Date: Tue Dec 13 13:38:57 2016 +0100 include cache.h before so Kqueue(2) gets sys/types.h diff --git a/bin/varnishd/waiter/cache_waiter_kqueue.c b/bin/varnishd/waiter/cache_waiter_kqueue.c index 4631306..4832f49 100644 --- a/bin/varnishd/waiter/cache_waiter_kqueue.c +++ b/bin/varnishd/waiter/cache_waiter_kqueue.c @@ -33,13 +33,13 @@ #if defined(HAVE_KQUEUE) +#include "cache/cache.h" + #include #include #include -#include "cache/cache.h" - #include "waiter/waiter_priv.h" #include "waiter/mgt_waiter.h" #include "vtim.h" From nils.goroll at uplex.de Tue Dec 13 13:43:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 14:43:05 +0100 Subject: [master] 480a387 more include cleanup for flexelint Message-ID: commit 480a38733f9c10fd3f8ed53b2b1a2fedad0d94d6 Author: Nils Goroll Date: Tue Dec 13 13:50:39 2016 +0100 more include cleanup for flexelint cache.h before system includes to avoid duplicate include warnings - except for stddef.h, which should come before cache.h to avoid warnings on Linux/gcc some reordering for the same reason remove some unused includes misc cleanup Still incomplete diff --git a/bin/varnishd/cache/cache_busyobj.c b/bin/varnishd/cache/cache_busyobj.c index 0e93dfb..8fbcf43 100644 --- a/bin/varnishd/cache/cache_busyobj.c +++ b/bin/varnishd/cache/cache_busyobj.c @@ -32,8 +32,8 @@ #include "config.h" -#include #include +#include #include "cache.h" diff --git a/bin/varnishd/cache/cache_esi_deliver.c b/bin/varnishd/cache/cache_esi_deliver.c index 59323ef..97bfd63 100644 --- a/bin/varnishd/cache/cache_esi_deliver.c +++ b/bin/varnishd/cache/cache_esi_deliver.c @@ -30,10 +30,11 @@ #include "config.h" +#include "cache.h" + #include #include -#include "cache.h" #include "cache_transport.h" #include "cache_filter.h" diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c index 43ad55e..51423f3 100644 --- a/bin/varnishd/cache/cache_hash.c +++ b/bin/varnishd/cache/cache_hash.c @@ -52,10 +52,11 @@ #include "config.h" +#include "cache.h" + #include #include -#include "cache.h" #include "cache/cache_transport.h" #include "hash/hash_slinger.h" diff --git a/bin/varnishd/cache/cache_http.c b/bin/varnishd/cache/cache_http.c index 9983911..6c39c3c 100644 --- a/bin/varnishd/cache/cache_http.c +++ b/bin/varnishd/cache/cache_http.c @@ -31,10 +31,9 @@ #include "config.h" -#include #include - #include "cache.h" +#include #include "vend.h" #include "vct.h" diff --git a/bin/varnishd/cache/cache_lck.c b/bin/varnishd/cache/cache_lck.c index 03dd243..74cc5b9 100644 --- a/bin/varnishd/cache/cache_lck.c +++ b/bin/varnishd/cache/cache_lck.c @@ -35,12 +35,12 @@ #include "config.h" +#include "cache.h" + #include #include #include -#include "cache.h" - struct ilck { unsigned magic; #define ILCK_MAGIC 0x7b86c8a5 diff --git a/bin/varnishd/cache/cache_main.c b/bin/varnishd/cache/cache_main.c index 7c076e2..1467706 100644 --- a/bin/varnishd/cache/cache_main.c +++ b/bin/varnishd/cache/cache_main.c @@ -29,10 +29,11 @@ #include "config.h" +#include "cache.h" + #include #include -#include "cache.h" #include "common/heritage.h" #include "vcli_serve.h" diff --git a/bin/varnishd/cache/cache_mempool.c b/bin/varnishd/cache/cache_mempool.c index 85ca62c..56edb20 100644 --- a/bin/varnishd/cache/cache_mempool.c +++ b/bin/varnishd/cache/cache_mempool.c @@ -29,12 +29,13 @@ */ #include "config.h" + #include +#include "cache.h" + #include #include -#include "cache.h" - #include "vtim.h" struct memitem { diff --git a/bin/varnishd/cache/cache_req.c b/bin/varnishd/cache/cache_req.c index c06c10d..71d7733 100644 --- a/bin/varnishd/cache/cache_req.c +++ b/bin/varnishd/cache/cache_req.c @@ -32,12 +32,12 @@ #include "config.h" -#include +#include "cache.h" + #include #include #include -#include "cache.h" #include "cache_pool.h" #include "cache_transport.h" diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c index 63eb665..c65ad95 100644 --- a/bin/varnishd/cache/cache_session.c +++ b/bin/varnishd/cache/cache_session.c @@ -36,11 +36,12 @@ #include "config.h" +#include "cache.h" + #include #include #include -#include "cache.h" #include "cache_pool.h" #include "cache_transport.h" diff --git a/bin/varnishd/cache/cache_shmlog.c b/bin/varnishd/cache/cache_shmlog.c index 5656b31..a294d65 100644 --- a/bin/varnishd/cache/cache_shmlog.c +++ b/bin/varnishd/cache/cache_shmlog.c @@ -29,11 +29,12 @@ #include "config.h" +#include "cache.h" + #include #include #include -#include "cache.h" #include "common/heritage.h" #include "vsl_priv.h" diff --git a/bin/varnishd/cache/cache_vcl.c b/bin/varnishd/cache/cache_vcl.c index 8df1304..2379d8e 100644 --- a/bin/varnishd/cache/cache_vcl.c +++ b/bin/varnishd/cache/cache_vcl.c @@ -30,13 +30,13 @@ #include "config.h" +#include "cache.h" + #include #include #include #include -#include "cache.h" - #include "vcl.h" #include "vrt.h" diff --git a/bin/varnishd/cache/cache_vrt_vmod.c b/bin/varnishd/cache/cache_vrt_vmod.c index 0b7e15f..b7d7bab 100644 --- a/bin/varnishd/cache/cache_vrt_vmod.c +++ b/bin/varnishd/cache/cache_vrt_vmod.c @@ -31,12 +31,12 @@ #include "config.h" +#include "cache.h" + #include #include #include -#include "cache.h" - #include "vcli_serve.h" #include "vrt.h" diff --git a/bin/varnishd/cache/cache_ws.c b/bin/varnishd/cache/cache_ws.c index 2eb443f..bc416c9 100644 --- a/bin/varnishd/cache/cache_ws.c +++ b/bin/varnishd/cache/cache_ws.c @@ -30,10 +30,10 @@ #include "config.h" -#include - #include "cache.h" +#include + void WS_Assert(const struct ws *ws) { diff --git a/bin/varnishd/hash/hash_classic.c b/bin/varnishd/hash/hash_classic.c index 29fffd9..6ad5a0d 100644 --- a/bin/varnishd/hash/hash_classic.c +++ b/bin/varnishd/hash/hash_classic.c @@ -31,11 +31,11 @@ #include "config.h" +#include "cache/cache.h" + #include #include -#include "cache/cache.h" - #include "hash/hash_slinger.h" static struct VSC_C_lck *lck_hcl; diff --git a/bin/varnishd/http1/cache_http1_fetch.c b/bin/varnishd/http1/cache_http1_fetch.c index 153f1d3..f29da00 100644 --- a/bin/varnishd/http1/cache_http1_fetch.c +++ b/bin/varnishd/http1/cache_http1_fetch.c @@ -29,12 +29,12 @@ #include "config.h" +#include "cache/cache.h" + #include #include #include -#include "cache/cache.h" - #include "vrt.h" #include "vtcp.h" #include "vtim.h" diff --git a/bin/varnishd/http1/cache_http1_fsm.c b/bin/varnishd/http1/cache_http1_fsm.c index ce1dc7e..dc325e0 100644 --- a/bin/varnishd/http1/cache_http1_fsm.c +++ b/bin/varnishd/http1/cache_http1_fsm.c @@ -33,17 +33,17 @@ #include "config.h" +#include "cache/cache.h" + #include #include #include -#include "cache/cache.h" #include "cache/cache_filter.h" #include "cache/cache_transport.h" #include "cache_http1.h" #include "hash/hash_slinger.h" -#include "vsb.h" #include "vtcp.h" static const char H1NEWREQ[] = "HTTP1::NewReq"; diff --git a/bin/varnishd/http1/cache_http1_line.c b/bin/varnishd/http1/cache_http1_line.c index 4dcb8c2..8267fca 100644 --- a/bin/varnishd/http1/cache_http1_line.c +++ b/bin/varnishd/http1/cache_http1_line.c @@ -35,11 +35,11 @@ #include "config.h" #include +#include "cache/cache.h" #include #include -#include "cache/cache.h" #include "cache_http1.h" #include "vtim.h" diff --git a/bin/varnishd/http1/cache_http1_pipe.c b/bin/varnishd/http1/cache_http1_pipe.c index 85df545..678a2b1 100644 --- a/bin/varnishd/http1/cache_http1_pipe.c +++ b/bin/varnishd/http1/cache_http1_pipe.c @@ -31,11 +31,11 @@ #include "config.h" +#include "cache/cache.h" + #include #include -#include "cache/cache.h" - #include "vrt.h" #include "cache_http1.h" diff --git a/bin/varnishd/http2/cache_http2_deliver.c b/bin/varnishd/http2/cache_http2_deliver.c index ab8402f..7666a4d 100644 --- a/bin/varnishd/http2/cache_http2_deliver.c +++ b/bin/varnishd/http2/cache_http2_deliver.c @@ -29,6 +29,8 @@ #include "config.h" +#include "cache/cache.h" + #include #include @@ -36,14 +38,12 @@ #include #include -#include "cache/cache.h" #include "cache/cache_filter.h" #include "cache/cache_transport.h" #include "http2/cache_http2.h" #include "vct.h" -#include "vend.h" /**********************************************************************/ diff --git a/bin/varnishd/http2/cache_http2_hpack.c b/bin/varnishd/http2/cache_http2_hpack.c index 9717292..16bf33c 100644 --- a/bin/varnishd/http2/cache_http2_hpack.c +++ b/bin/varnishd/http2/cache_http2_hpack.c @@ -29,10 +29,11 @@ #include "config.h" +#include "cache/cache.h" + #include #include -#include "cache/cache.h" #include "http2/cache_http2.h" #include "vct.h" diff --git a/bin/varnishd/http2/cache_http2_panic.c b/bin/varnishd/http2/cache_http2_panic.c index 114b25b..6fe519b 100644 --- a/bin/varnishd/http2/cache_http2_panic.c +++ b/bin/varnishd/http2/cache_http2_panic.c @@ -29,6 +29,8 @@ #include "config.h" +#include "cache/cache.h" + #include #include @@ -36,14 +38,10 @@ #include #include -#include "cache/cache.h" #include "cache/cache_filter.h" #include "cache/cache_transport.h" #include "http2/cache_http2.h" -#include "vend.h" -#include "vsb.h" - void h2_sess_panic(struct vsb *vsb, const struct sess *sp) { diff --git a/bin/varnishd/http2/cache_http2_proto.c b/bin/varnishd/http2/cache_http2_proto.c index 06346f8..0f03e15 100644 --- a/bin/varnishd/http2/cache_http2_proto.c +++ b/bin/varnishd/http2/cache_http2_proto.c @@ -29,6 +29,8 @@ #include "config.h" +#include "cache/cache.h" + #include #include @@ -36,13 +38,11 @@ #include #include -#include "cache/cache.h" #include "cache/cache_filter.h" #include "cache/cache_transport.h" #include "http2/cache_http2.h" #include "vend.h" -#include "vsb.h" #include "vtcp.h" #include "vtim.h" diff --git a/bin/varnishd/http2/cache_http2_send.c b/bin/varnishd/http2/cache_http2_send.c index 2f4aa9f..257d518 100644 --- a/bin/varnishd/http2/cache_http2_send.c +++ b/bin/varnishd/http2/cache_http2_send.c @@ -29,6 +29,8 @@ #include "config.h" +#include "cache/cache.h" + #include #include @@ -36,13 +38,11 @@ #include #include -#include "cache/cache.h" #include "cache/cache_filter.h" #include "cache/cache_transport.h" #include "http2/cache_http2.h" #include "vend.h" -#include "vsb.h" static void h2_mk_hdr(uint8_t *hdr, enum h2_frame_e type, uint8_t flags, diff --git a/bin/varnishd/mgt/mgt_child.c b/bin/varnishd/mgt/mgt_child.c index 8bba5b7..dded01e 100644 --- a/bin/varnishd/mgt/mgt_child.c +++ b/bin/varnishd/mgt/mgt_child.c @@ -31,13 +31,13 @@ #include "config.h" +#include #include #include #include #include #include -#include #include #include #include diff --git a/bin/varnishd/mgt/mgt_jail_unix.c b/bin/varnishd/mgt/mgt_jail_unix.c index 147d00e..a28cdc8 100644 --- a/bin/varnishd/mgt/mgt_jail_unix.c +++ b/bin/varnishd/mgt/mgt_jail_unix.c @@ -30,12 +30,12 @@ #include "config.h" +#include #include #include #include #include #include -#include #include #include #include diff --git a/bin/varnishd/mgt/mgt_main.c b/bin/varnishd/mgt/mgt_main.c index 61f8a90..82641f8 100644 --- a/bin/varnishd/mgt/mgt_main.c +++ b/bin/varnishd/mgt/mgt_main.c @@ -33,15 +33,15 @@ #include +#include +#include #include #include #include #include -#include #include #include #include -#include #include #include "mgt/mgt.h" diff --git a/bin/varnishd/mgt/mgt_param_tcp.c b/bin/varnishd/mgt/mgt_param_tcp.c index 27dd249..8def2a4 100644 --- a/bin/varnishd/mgt/mgt_param_tcp.c +++ b/bin/varnishd/mgt/mgt_param_tcp.c @@ -34,11 +34,11 @@ #include "config.h" +#include +#include #include #include #include -#include -#include #include #include #include diff --git a/bin/varnishd/mgt/mgt_shmem.c b/bin/varnishd/mgt/mgt_shmem.c index e565d06..a131533 100644 --- a/bin/varnishd/mgt/mgt_shmem.c +++ b/bin/varnishd/mgt/mgt_shmem.c @@ -46,7 +46,6 @@ #include "vfl.h" #include "vsm_priv.h" -#include "vmb.h" #include "vfil.h" #ifndef MAP_HASSEMAPHORE diff --git a/bin/varnishd/proxy/cache_proxy_proto.c b/bin/varnishd/proxy/cache_proxy_proto.c index 8c777c5..f890b81 100644 --- a/bin/varnishd/proxy/cache_proxy_proto.c +++ b/bin/varnishd/proxy/cache_proxy_proto.c @@ -29,17 +29,17 @@ #include "config.h" +#include "cache/cache.h" + #include #include #include -#include "cache/cache.h" #include "cache/cache_transport.h" #include "vend.h" #include "vsa.h" -#include "vsb.h" #include "vtcp.h" /********************************************************************** diff --git a/bin/varnishd/storage/mgt_storage_persistent.c b/bin/varnishd/storage/mgt_storage_persistent.c index 918b612..0c87733 100644 --- a/bin/varnishd/storage/mgt_storage_persistent.c +++ b/bin/varnishd/storage/mgt_storage_persistent.c @@ -35,13 +35,14 @@ #include "config.h" +#include "cache/cache.h" + #include #include #include #include -#include "cache/cache.h" #include "storage/storage.h" #include "storage/storage_simple.h" diff --git a/bin/varnishd/storage/stevedore.c b/bin/varnishd/storage/stevedore.c index c646bdd..0a3fd3f 100644 --- a/bin/varnishd/storage/stevedore.c +++ b/bin/varnishd/storage/stevedore.c @@ -33,10 +33,11 @@ #include "config.h" +#include "cache/cache.h" + #include #include -#include "cache/cache.h" #include "hash/hash_slinger.h" #include "storage/storage.h" diff --git a/bin/varnishd/storage/storage_file.c b/bin/varnishd/storage/storage_file.c index 982f70f..139dc02 100644 --- a/bin/varnishd/storage/storage_file.c +++ b/bin/varnishd/storage/storage_file.c @@ -31,13 +31,14 @@ #include "config.h" +#include "cache/cache.h" + #include #include #include #include -#include "cache/cache.h" #include "storage/storage.h" #include "storage/storage_simple.h" diff --git a/bin/varnishd/storage/storage_malloc.c b/bin/varnishd/storage/storage_malloc.c index e6022e8..0361e52 100644 --- a/bin/varnishd/storage/storage_malloc.c +++ b/bin/varnishd/storage/storage_malloc.c @@ -31,10 +31,11 @@ #include "config.h" +#include "cache/cache.h" + #include #include -#include "cache/cache.h" #include "storage/storage.h" #include "storage/storage_simple.h" diff --git a/bin/varnishd/storage/storage_persistent.c b/bin/varnishd/storage/storage_persistent.c index 535ff37..5af148e 100644 --- a/bin/varnishd/storage/storage_persistent.c +++ b/bin/varnishd/storage/storage_persistent.c @@ -35,13 +35,14 @@ #include "config.h" +#include "cache/cache.h" + #include #include #include #include -#include "cache/cache.h" #include "cache/cache_obj.h" #include "storage/storage.h" #include "storage/storage_simple.h" diff --git a/bin/varnishd/storage/storage_persistent_silo.c b/bin/varnishd/storage/storage_persistent_silo.c index 6a1771a..1ee1c1d 100644 --- a/bin/varnishd/storage/storage_persistent_silo.c +++ b/bin/varnishd/storage/storage_persistent_silo.c @@ -34,10 +34,11 @@ #include "config.h" +#include "cache/cache.h" + #include #include -#include "cache/cache.h" #include "cache/cache_obj.h" #include "storage/storage.h" #include "storage/storage_simple.h" diff --git a/bin/varnishd/storage/storage_persistent_subr.c b/bin/varnishd/storage/storage_persistent_subr.c index 50e36c2..25f0af6 100644 --- a/bin/varnishd/storage/storage_persistent_subr.c +++ b/bin/varnishd/storage/storage_persistent_subr.c @@ -35,13 +35,14 @@ #include "config.h" +#include +#include "cache/cache.h" + #include -#include #include #include -#include "cache/cache.h" #include "storage/storage.h" #include "vsha256.h" diff --git a/bin/varnishd/storage/storage_simple.c b/bin/varnishd/storage/storage_simple.c index 091aa29..6eba0a8 100644 --- a/bin/varnishd/storage/storage_simple.c +++ b/bin/varnishd/storage/storage_simple.c @@ -29,18 +29,17 @@ #include "config.h" +#include "cache/cache.h" + #include #include -#include "cache/cache.h" #include "cache/cache_obj.h" #include "hash/hash_slinger.h" #include "storage/storage.h" #include "storage/storage_simple.h" -#include "vsb.h" - #include "vtim.h" /* Flags for allocating memory in sml_stv_alloc */ diff --git a/bin/varnishd/waiter/cache_waiter.c b/bin/varnishd/waiter/cache_waiter.c index f05a865..2d31d36 100644 --- a/bin/varnishd/waiter/cache_waiter.c +++ b/bin/varnishd/waiter/cache_waiter.c @@ -30,14 +30,13 @@ #include "config.h" -#include +#include "cache/cache.h" + #include #include #include "binary_heap.h" -#include "cache/cache.h" - #include "waiter/waiter_priv.h" #include "waiter/mgt_waiter.h" diff --git a/bin/varnishd/waiter/cache_waiter_epoll.c b/bin/varnishd/waiter/cache_waiter_epoll.c index 6b6d39b..f19b20b 100644 --- a/bin/varnishd/waiter/cache_waiter_epoll.c +++ b/bin/varnishd/waiter/cache_waiter_epoll.c @@ -45,7 +45,6 @@ #include "waiter/waiter_priv.h" #include "waiter/mgt_waiter.h" #include "vtim.h" -#include "vfil.h" #ifndef EPOLLRDHUP # define EPOLLRDHUP 0 diff --git a/lib/libvarnish/vcli_proto.c b/lib/libvarnish/vcli_proto.c index 2409aa4..e9ea299 100644 --- a/lib/libvarnish/vcli_proto.c +++ b/lib/libvarnish/vcli_proto.c @@ -39,8 +39,7 @@ #include #include -#include "vdef.h" -#include "vas.h" +#include "vas.h" // XXX Flexelint "not used" - but req'ed for assert() #include "vcli.h" #include "vsha256.h" diff --git a/lib/libvarnish/vcli_serve.c b/lib/libvarnish/vcli_serve.c index 119b5f1..9a6cf3e 100644 --- a/lib/libvarnish/vcli_serve.c +++ b/lib/libvarnish/vcli_serve.c @@ -31,6 +31,7 @@ #include "config.h" +#include #include #include #include @@ -39,7 +40,6 @@ #include #include #include -#include #include #include "vdef.h" diff --git a/lib/libvarnish/vev.c b/lib/libvarnish/vev.c index 0ceaaa9..e3f10cf 100644 --- a/lib/libvarnish/vev.c +++ b/lib/libvarnish/vev.c @@ -29,6 +29,7 @@ #include "config.h" +#include #include #include #include @@ -36,7 +37,6 @@ #include #include #include -#include #include "vdef.h" #include "miniobj.h" diff --git a/lib/libvarnish/vfil.c b/lib/libvarnish/vfil.c index 9c7af4d..3684fd1 100644 --- a/lib/libvarnish/vfil.c +++ b/lib/libvarnish/vfil.c @@ -29,18 +29,17 @@ #include "config.h" +#include +#include #include - #include #include #include #include #include -#include #include #include #include -#include #ifdef HAVE_SYS_MOUNT_H # include # include diff --git a/lib/libvarnish/vin.c b/lib/libvarnish/vin.c index be5b0bd..e06a2c0 100644 --- a/lib/libvarnish/vin.c +++ b/lib/libvarnish/vin.c @@ -38,7 +38,7 @@ #include #include "vsm_priv.h" -#include "vas.h" +#include "vas.h" // XXX Flexelint "not used" - but req'ed for assert() #include "vdef.h" #include "vin.h" diff --git a/lib/libvarnish/vlu.c b/lib/libvarnish/vlu.c index 1029cfd..7a9672e 100644 --- a/lib/libvarnish/vlu.c +++ b/lib/libvarnish/vlu.c @@ -34,8 +34,8 @@ #include #include +#include "vas.h" // XXX Flexelint "not used" - but req'ed for assert() #include "miniobj.h" -#include "vas.h" #include "vlu.h" diff --git a/lib/libvarnish/vmb.c b/lib/libvarnish/vmb.c index a3a7dea..13fc87c 100644 --- a/lib/libvarnish/vmb.c +++ b/lib/libvarnish/vmb.c @@ -28,14 +28,14 @@ #include "config.h" +#ifdef VMB_NEEDS_PTHREAD_WORKAROUND_THIS_IS_BAD_FOR_PERFORMANCE + #include #include #include "vas.h" #include "vmb.h" -#ifdef VMB_NEEDS_PTHREAD_WORKAROUND_THIS_IS_BAD_FOR_PERFORMANCE - static pthread_mutex_t mb_mtx; static pthread_once_t mb_mtx_once = PTHREAD_ONCE_INIT; diff --git a/lib/libvarnish/vpf.c b/lib/libvarnish/vpf.c index 7670d87..7883adb 100644 --- a/lib/libvarnish/vpf.c +++ b/lib/libvarnish/vpf.c @@ -40,8 +40,8 @@ #include #include +#include "vas.h" // XXX Flexelint "not used" - but req'ed for assert() #include "vfl.h" -#include "vas.h" #include "vpf.h" struct vpf_fh { diff --git a/lib/libvarnish/vre.c b/lib/libvarnish/vre.c index 56abccf..b625566 100644 --- a/lib/libvarnish/vre.c +++ b/lib/libvarnish/vre.c @@ -31,8 +31,8 @@ #include #include +#include "vas.h" // XXX Flexelint "not used" - but req'ed for assert() #include "miniobj.h" -#include "vas.h" #include "vre.h" diff --git a/lib/libvarnish/vsb.c b/lib/libvarnish/vsb.c index 23fa142..b713642 100644 --- a/lib/libvarnish/vsb.c +++ b/lib/libvarnish/vsb.c @@ -37,7 +37,7 @@ __FBSDID("$FreeBSD: head/sys/kern/subr_vsb.c 222004 2011-05-17 06:36:32Z phk $") #include #include "vdef.h" -#include "vas.h" +#include "vas.h" // XXX Flexelint "not used" - but req'ed for assert() #include "vsb.h" #define KASSERT(e, m) assert(e) diff --git a/lib/libvarnish/vtim.c b/lib/libvarnish/vtim.c index ae19c6f..1af791c 100644 --- a/lib/libvarnish/vtim.c +++ b/lib/libvarnish/vtim.c @@ -54,13 +54,13 @@ #include "config.h" +#include #include #include #include #include #include -#include #include #ifdef __MACH__ #include diff --git a/lib/libvcc/vcc_acl.c b/lib/libvcc/vcc_acl.c index 10d4ffa..8a8a87a 100644 --- a/lib/libvcc/vcc_acl.c +++ b/lib/libvcc/vcc_acl.c @@ -29,13 +29,14 @@ #include "config.h" +#include + #include #include #include #include -#include #include #include #include From nils.goroll at uplex.de Tue Dec 13 13:43:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 14:43:05 +0100 Subject: [master] 3a23486 remove includes - these are now in vfil.c Message-ID: commit 3a234864a07f8239a51ae1032cbb2b21e24a369b Author: Nils Goroll Date: Tue Dec 13 14:21:10 2016 +0100 remove includes - these are now in vfil.c diff --git a/bin/varnishd/storage/stevedore_utils.c b/bin/varnishd/storage/stevedore_utils.c index e5b727d..dcf5e95 100644 --- a/bin/varnishd/storage/stevedore_utils.c +++ b/bin/varnishd/storage/stevedore_utils.c @@ -33,16 +33,6 @@ #include #include -#ifdef HAVE_SYS_MOUNT_H -# include -# include -#endif -#ifdef HAVE_SYS_STATVFS_H -# include -#endif -#ifdef HAVE_SYS_VFS_H -# include -#endif #include #include From nils.goroll at uplex.de Tue Dec 13 14:13:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 15:13:05 +0100 Subject: [master] 468b2b5 need to include vmb.h unconditionally Message-ID: commit 468b2b5290463943ae07ec33fde75618913a71ce Author: Nils Goroll Date: Tue Dec 13 15:11:33 2016 +0100 need to include vmb.h unconditionally it is the place which defines VMB_NEEDS_PTHREAD_WORKAROUND_THIS_IS_BAD_FOR_PERFORMANCE diff --git a/lib/libvarnish/vmb.c b/lib/libvarnish/vmb.c index 13fc87c..f98e31e 100644 --- a/lib/libvarnish/vmb.c +++ b/lib/libvarnish/vmb.c @@ -28,13 +28,14 @@ #include "config.h" +#include "vmb.h" + #ifdef VMB_NEEDS_PTHREAD_WORKAROUND_THIS_IS_BAD_FOR_PERFORMANCE #include #include #include "vas.h" -#include "vmb.h" static pthread_mutex_t mb_mtx; static pthread_once_t mb_mtx_once = PTHREAD_ONCE_INIT; From dridi.boukelmoune at gmail.com Tue Dec 13 14:56:04 2016 From: dridi.boukelmoune at gmail.com (Dridi Boukelmoune) Date: Tue, 13 Dec 2016 15:56:04 +0100 Subject: [master] a60fb61 I have nothing to do with this bit Message-ID: commit a60fb6191bcffe3cb70f53a83b99e8dcaf7f0e80 Author: Dridi Boukelmoune Date: Tue Dec 13 09:32:10 2016 +0100 I have nothing to do with this bit diff --git a/bin/varnishd/hpack/vhp_gen_hufdec.c b/bin/varnishd/hpack/vhp_gen_hufdec.c index 7372815..a15dbb7 100644 --- a/bin/varnishd/hpack/vhp_gen_hufdec.c +++ b/bin/varnishd/hpack/vhp_gen_hufdec.c @@ -1,8 +1,8 @@ /*- - * Copyright (c) 2016 Dridi Boukelmoune + * Copyright (c) 2016 Varnish Software AS * All rights reserved. * - * Author: Dridi Boukelmoune + * Martin Blix Grydeland * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions From dridi.boukelmoune at gmail.com Tue Dec 13 14:56:04 2016 From: dridi.boukelmoune at gmail.com (Dridi Boukelmoune) Date: Tue, 13 Dec 2016 15:56:04 +0100 Subject: [master] 513e107 TAB has a much worse rank than you might think Message-ID: commit 513e1077207f27099bbb63307a8ddf8c14699f4c Author: Dridi Boukelmoune Date: Tue Dec 13 09:32:46 2016 +0100 TAB has a much worse rank than you might think diff --git a/bin/varnishtest/vtc_h2_dectbl.h b/bin/varnishtest/vtc_h2_dectbl.h index 7c72700..b6402d5 100644 --- a/bin/varnishtest/vtc_h2_dectbl.h +++ b/bin/varnishtest/vtc_h2_dectbl.h @@ -486,7 +486,7 @@ static struct ssym byte2_pref1_array[] = { /* idx 231 */ {7, 231, NULL}, /* idx 232 */ {7, 239, NULL}, /* idx 233 */ {7, 239, NULL}, - /* idx 234 */ {8, 9, NULL}, + /* idx 234 */ {8, 9, NULL}, /* tab */ /* idx 235 */ {8, 142, NULL}, /* idx 236 */ {8, 144, NULL}, /* idx 237 */ {8, 145, NULL}, @@ -872,10 +872,10 @@ static struct ssym byte0_array[] = { /* idx 77 */ {5, 116, NULL}, /* 't' */ /* idx 78 */ {5, 116, NULL}, /* 't' */ /* idx 79 */ {5, 116, NULL}, /* 't' */ - /* idx 80 */ {6, 32, NULL}, /* tab */ - /* idx 81 */ {6, 32, NULL}, /* tab */ - /* idx 82 */ {6, 32, NULL}, /* tab */ - /* idx 83 */ {6, 32, NULL}, /* tab */ + /* idx 80 */ {6, 32, NULL}, /* ' ' */ + /* idx 81 */ {6, 32, NULL}, /* ' ' */ + /* idx 82 */ {6, 32, NULL}, /* ' ' */ + /* idx 83 */ {6, 32, NULL}, /* ' ' */ /* idx 84 */ {6, 37, NULL}, /* '%' */ /* idx 85 */ {6, 37, NULL}, /* '%' */ /* idx 86 */ {6, 37, NULL}, /* '%' */ From nils.goroll at uplex.de Tue Dec 13 15:06:05 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Tue, 13 Dec 2016 16:06:05 +0100 Subject: [master] 23a6dd8 remove superfluous assert Message-ID: commit 23a6dd80892179c2e869d94131bd450b5d82fa2d Author: Nils Goroll Date: Tue Dec 13 16:05:28 2016 +0100 remove superfluous assert diff --git a/bin/varnishd/cache/cache_esi_parse.c b/bin/varnishd/cache/cache_esi_parse.c index 4df0c8c..d2b2306 100644 --- a/bin/varnishd/cache/cache_esi_parse.c +++ b/bin/varnishd/cache/cache_esi_parse.c @@ -389,7 +389,6 @@ vep_mark_pending(struct vep_state *vep, const char *p) AN(vep->ver_p); l = p - vep->ver_p; assert(l > 0); - assert(l >= 0); vep->crcp = crc32(vep->crcp, (const void *)vep->ver_p, l); vep->ver_p = p; From dridi.boukelmoune at gmail.com Tue Dec 13 19:29:05 2016 From: dridi.boukelmoune at gmail.com (Dridi Boukelmoune) Date: Tue, 13 Dec 2016 20:29:05 +0100 Subject: [master] d26972b Whitespace OCD Message-ID: commit d26972b5773ab71e4d53c2b645710de9c916416c Author: Dridi Boukelmoune Date: Tue Dec 13 20:27:16 2016 +0100 Whitespace OCD diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c index 11eaa22..9ebcc0f 100644 --- a/bin/varnishd/cache/cache_vrt_var.c +++ b/bin/varnishd/cache/cache_vrt_var.c @@ -63,7 +63,7 @@ vrt_do_string(const struct http *hp, int fld, #define VRT_HDR_L(obj, hdr, fld) \ void \ -VRT_l_##obj##_##hdr(VRT_CTX, const char *p, ...) \ +VRT_l_##obj##_##hdr(VRT_CTX, const char *p, ...) \ { \ va_list ap; \ \ @@ -75,7 +75,7 @@ VRT_l_##obj##_##hdr(VRT_CTX, const char *p, ...) \ #define VRT_HDR_R(obj, hdr, fld) \ const char * \ -VRT_r_##obj##_##hdr(VRT_CTX) \ +VRT_r_##obj##_##hdr(VRT_CTX) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ CHECK_OBJ_NOTNULL(ctx->http_##obj, HTTP_MAGIC); \ @@ -88,17 +88,18 @@ VRT_r_##obj##_##hdr(VRT_CTX) \ #define VRT_STATUS_L(obj) \ void \ -VRT_l_##obj##_status(VRT_CTX, long num) \ +VRT_l_##obj##_status(VRT_CTX, long num) \ { \ \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ CHECK_OBJ_NOTNULL(ctx->http_##obj, HTTP_MAGIC); \ if (num > 65535) { \ - VSLb(ctx->vsl, SLT_VCL_Error, "%s.status > 65535", #obj); \ + VSLb(ctx->vsl, SLT_VCL_Error, \ + "%s.status > 65535", #obj); \ WS_MarkOverflow(ctx->http_##obj->ws); \ } else if ((num % 1000) < 100) { \ - VSLb(ctx->vsl, SLT_VCL_Error, "illegal %s.status (..0##)", \ - #obj); \ + VSLb(ctx->vsl, SLT_VCL_Error, \ + "illegal %s.status (..0##)", \ #obj); \ WS_MarkOverflow(ctx->http_##obj->ws); \ } else { \ http_SetStatus(ctx->http_##obj, (uint16_t)num); \ @@ -107,7 +108,7 @@ VRT_l_##obj##_status(VRT_CTX, long num) \ #define VRT_STATUS_R(obj) \ long \ -VRT_r_##obj##_status(VRT_CTX) \ +VRT_r_##obj##_status(VRT_CTX) \ { \ \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ @@ -177,7 +178,7 @@ VRT_r_obj_reason(VRT_CTX) #define VBERESPW0(field) #define VBERESPW1(field) \ void \ -VRT_l_beresp_##field(VRT_CTX, unsigned a) \ +VRT_l_beresp_##field(VRT_CTX, unsigned a) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); \ @@ -187,7 +188,7 @@ VRT_l_beresp_##field(VRT_CTX, unsigned a) \ #define VBERESPR0(field) #define VBERESPR1(field) \ unsigned \ -VRT_r_beresp_##field(VRT_CTX) \ +VRT_r_beresp_##field(VRT_CTX) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); \ @@ -268,7 +269,7 @@ VRT_l_client_identity(VRT_CTX, const char *str, ...) #define BEREQ_TIMEOUT(which) \ void \ -VRT_l_bereq_##which(VRT_CTX, double num) \ +VRT_l_bereq_##which(VRT_CTX, double num) \ { \ \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ @@ -277,7 +278,7 @@ VRT_l_bereq_##which(VRT_CTX, double num) \ } \ \ double \ -VRT_r_bereq_##which(VRT_CTX) \ +VRT_r_bereq_##which(VRT_CTX) \ { \ \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ @@ -394,7 +395,7 @@ VRT_l_beresp_storage(VRT_CTX, VCL_STEVEDORE stv) #define REQ_VAR_L(nm, elem, type,extra) \ \ void \ -VRT_l_req_##nm(VRT_CTX, type arg) \ +VRT_l_req_##nm(VRT_CTX, type arg) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); \ @@ -405,7 +406,7 @@ VRT_l_req_##nm(VRT_CTX, type arg) \ #define REQ_VAR_R(nm, elem, type) \ \ type \ -VRT_r_req_##nm(VRT_CTX) \ +VRT_r_req_##nm(VRT_CTX) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); \ @@ -586,7 +587,7 @@ VRT_DO_EXP_R(beresp, ctx->bo->fetch_objcore, keep, 0) #define VRT_DO_AGE_R(which, oc) \ \ double \ -VRT_r_##which##_##age(VRT_CTX) \ +VRT_r_##which##_##age(VRT_CTX) \ { \ \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ @@ -625,22 +626,22 @@ VRT_r_bereq_xid(VRT_CTX) */ #define VREQW0(field) -#define VREQW1(field) \ +#define VREQW1(field) \ void \ -VRT_l_req_##field(VRT_CTX, unsigned a) \ +VRT_l_req_##field(VRT_CTX, unsigned a) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); \ ctx->req->field = a ? 1 : 0; \ } #define VREQR0(field) -#define VREQR1(field) \ +#define VREQR1(field) \ unsigned \ -VRT_r_req_##field(VRT_CTX) \ +VRT_r_req_##field(VRT_CTX) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); \ return (ctx->req->field); \ } @@ -756,7 +757,7 @@ VRT_BODY_L(resp) #define HTTP_VAR(x) \ struct http * \ -VRT_r_##x(VRT_CTX) \ +VRT_r_##x(VRT_CTX) \ { \ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ CHECK_OBJ_NOTNULL(ctx->http_##x, HTTP_MAGIC); \ From dridi.boukelmoune at gmail.com Tue Dec 13 19:31:05 2016 From: dridi.boukelmoune at gmail.com (Dridi Boukelmoune) Date: Tue, 13 Dec 2016 20:31:05 +0100 Subject: [master] b8272f2 Residual anti slash Message-ID: commit b8272f25f5e015263f5f6473b67a79a675f7b31c Author: Dridi Boukelmoune Date: Tue Dec 13 20:30:02 2016 +0100 Residual anti slash diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c index 9ebcc0f..4932b26 100644 --- a/bin/varnishd/cache/cache_vrt_var.c +++ b/bin/varnishd/cache/cache_vrt_var.c @@ -99,7 +99,7 @@ VRT_l_##obj##_status(VRT_CTX, long num) \ WS_MarkOverflow(ctx->http_##obj->ws); \ } else if ((num % 1000) < 100) { \ VSLb(ctx->vsl, SLT_VCL_Error, \ - "illegal %s.status (..0##)", \ #obj); \ + "illegal %s.status (..0##)", #obj); \ WS_MarkOverflow(ctx->http_##obj->ws); \ } else { \ http_SetStatus(ctx->http_##obj, (uint16_t)num); \ From nils.goroll at uplex.de Wed Dec 14 14:32:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 14 Dec 2016 15:32:04 +0100 Subject: [master] 09ed403 ESI parsing debug code for VEP_MATCHBUF state Message-ID: commit 09ed4039af46a93bc3c7abde369bc6260287a543 Author: Nils Goroll Date: Wed Dec 14 15:18:59 2016 +0100 ESI parsing debug code for VEP_MATCHBUF state ESI Debugging code is disabled unless the Debug macro at the top of the file is changed. diff --git a/bin/varnishd/cache/cache_esi_parse.c b/bin/varnishd/cache/cache_esi_parse.c index d2b2306..45d5f48 100644 --- a/bin/varnishd/cache/cache_esi_parse.c +++ b/bin/varnishd/cache/cache_esi_parse.c @@ -932,6 +932,13 @@ VEP_Parse(struct vep_state *vep, const char *p, size_t l) memcpy(vep->tag + vep->tag_i, p, i); vm = vep_match(vep, vep->tag, vep->tag + vep->tag_i + i); + Debug("MB (%.*s) tag_i %d i %d = vm %p match %s\n", + vep->tag_i + i, vep->tag, + vep->tag_i, + i, + vm, + vm ? vm->match : "(nil)"); + if (vm == NULL) { vep->tag_i += i; p += i; From nils.goroll at uplex.de Wed Dec 14 14:32:04 2016 From: nils.goroll at uplex.de (Nils Goroll) Date: Wed, 14 Dec 2016 15:32:04 +0100 Subject: [master] f2a7810 Fix ESI Parsing when VEP_Parse is called on tag which shares a prefix with another Message-ID: commit f2a7810d7b12dc2f3406d31daa81f0e4e9b5b469 Author: Nils Goroll Date: Wed Dec 14 15:21:41 2016 +0100 Fix ESI Parsing when VEP_Parse is called on tag which shares a prefix with another Example for the case addressed here is an html comment which is not esi. 1st call on !--e 2nd call on !--end The first call could match !--esi:, so vep_match() does not return with VEP_NOTMYTAG, but with null, so characters up until 'e' are marked. For the second call, we need to consider the case that characters after the end of the tag could already be marked. Fixes #1988 diff --git a/bin/varnishd/cache/cache_esi_parse.c b/bin/varnishd/cache/cache_esi_parse.c index 45d5f48..7f17cc3 100644 --- a/bin/varnishd/cache/cache_esi_parse.c +++ b/bin/varnishd/cache/cache_esi_parse.c @@ -946,8 +946,11 @@ VEP_Parse(struct vep_state *vep, const char *p, size_t l) } else { vep->match_hit = vm; vep->state = *vm->state; - if (vm->match != NULL) - p += strlen(vm->match) - vep->tag_i; + if (vm->match != NULL) { + i = strlen(vm->match); + if (i > vep->tag_i) + p += i - vep->tag_i; + } vep->match = NULL; vep->tag_i = 0; } diff --git a/bin/varnishtest/tests/e00019.vtc b/bin/varnishtest/tests/e00019.vtc index 1010eab..88aa405 100644 --- a/bin/varnishtest/tests/e00019.vtc +++ b/bin/varnishtest/tests/e00019.vtc @@ -21,6 +21,10 @@ server s1 { chunkedlen 65536 chunked {} + chunked {