[master] dc5b681 add svgs to make phk happy

Nils Goroll nils.goroll at uplex.de
Thu Mar 10 15:56:04 CET 2016


commit dc5b681e95803c078117ab7fb428f71387a46fed
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Thu Mar 10 15:51:58 2016 +0100

    add svgs to make phk happy
    
    This really is the wrong way to go, generated files should not live
    in the source tree. But lightening the load of phk is more important.

diff --git a/doc/graphviz/cache_fetch.svg b/doc/graphviz/cache_fetch.svg
new file mode 100644
index 0000000..ecd062a
--- /dev/null
+++ b/doc/graphviz/cache_fetch.svg
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+ -->
+<!-- Title: cache_fetch Pages: 1 -->
+<svg width="842pt" height="723pt"
+ viewBox="36.00 36.00 806.00 686.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(40 682.74)">
+<title>cache_fetch</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-646.74 766,-646.74 766,4 -4,4"/>
+<g id="clust1" class="cluster"><title>cluster_backend</title>
+<polygon fill="aliceblue" stroke="aliceblue" points="8,-8 8,-634.74 754,-634.74 754,-8 8,-8"/>
+</g>
+<!-- RETRY -->
+<g id="node1" class="node"><title>RETRY</title>
+<text text-anchor="middle" x="416" y="-613.04" font-family="Times,serif" font-size="14.00">RETRY</text>
+</g>
+<!-- v_b_f -->
+<g id="node4" class="node"><title>v_b_f</title>
+<polygon fill="none" stroke="black" points="190.5,-492.24 190.5,-561.24 379.5,-561.24 379.5,-492.24 190.5,-492.24"/>
+<text text-anchor="middle" x="285" y="-546.04" font-family="Times,serif" font-size="14.00">vbf_stp_startfetch:</text>
+<polyline fill="none" stroke="black" points="190.5,-538.24 379.5,-538.24 "/>
+<text text-anchor="middle" x="256.5" y="-523.04" font-family="Times,serif" font-size="14.00">vcl_backend_fetch{}</text>
+<polyline fill="none" stroke="black" points="322.5,-515.24 322.5,-538.24 "/>
+<text text-anchor="middle" x="351" y="-523.04" font-family="Times,serif" font-size="14.00">bereq.*</text>
+<polyline fill="none" stroke="black" points="190.5,-515.24 379.5,-515.24 "/>
+<text text-anchor="middle" x="242" y="-500.04" font-family="Times,serif" font-size="14.00">abandon</text>
+<polyline fill="none" stroke="black" points="293.5,-492.24 293.5,-515.24 "/>
+<text text-anchor="middle" x="336.5" y="-500.04" font-family="Times,serif" font-size="14.00">fetch</text>
+</g>
+<!-- RETRY->v_b_f -->
+<g id="edge4" class="edge"><title>RETRY->v_b_f</title>
+<path fill="none" stroke="purple" d="M390.431,-598.564C376.989,-589.534 359.918,-578.067 343.449,-567.003"/>
+<polygon fill="purple" stroke="purple" points="345.166,-563.941 334.914,-561.27 341.263,-569.752 345.166,-563.941"/>
+</g>
+<!-- v_b_f_BGFETCH -->
+<g id="node2" class="node"><title>v_b_f_BGFETCH</title>
+<polygon fill="turquoise" stroke="turquoise" points="367,-634.74 289,-634.74 289,-598.74 367,-598.74 367,-634.74"/>
+<text text-anchor="middle" x="328" y="-613.04" font-family="Times,serif" font-size="14.00">BGFETCH</text>
+</g>
+<!-- v_b_f_BGFETCH->v_b_f -->
+<g id="edge1" class="edge"><title>v_b_f_BGFETCH->v_b_f</title>
+<path fill="none" stroke="green" stroke-width="2" d="M319.505,-598.354C315.569,-590.301 310.703,-580.342 305.879,-570.468"/>
+<polygon fill="green" stroke="green" stroke-width="2" points="309.023,-568.93 301.488,-561.482 302.733,-572.003 309.023,-568.93"/>
+</g>
+<!-- v_b_f_FETCH -->
+<g id="node3" class="node"><title>v_b_f_FETCH</title>
+<polygon fill="turquoise" stroke="turquoise" points="270.5,-634.74 211.5,-634.74 211.5,-598.74 270.5,-598.74 270.5,-634.74"/>
+<text text-anchor="middle" x="241" y="-613.04" font-family="Times,serif" font-size="14.00">FETCH</text>
+</g>
+<!-- v_b_f_FETCH->v_b_f -->
+<g id="edge2" class="edge"><title>v_b_f_FETCH->v_b_f</title>
+<path fill="none" stroke="blue" stroke-width="2" d="M244.189,-598.354C247.348,-590.301 251.913,-580.342 256.888,-570.468"/>
+<polygon fill="blue" stroke="blue" stroke-width="2" points="260.052,-571.971 261.545,-561.482 253.836,-568.751 260.052,-571.971"/>
+</g>
+<!-- v_b_f_FETCH->v_b_f -->
+<g id="edge3" class="edge"><title>v_b_f_FETCH->v_b_f</title>
+<path fill="none" stroke="red" stroke-width="2" d="M255.197,-598.354C260.042,-590.383 265.376,-580.545 270.233,-570.771"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="273.521,-572.01 274.713,-561.482 267.217,-568.969 273.521,-572.01"/>
+</g>
+<!-- v_b_hdrs -->
+<g id="node5" class="node"><title>v_b_hdrs</title>
+<ellipse fill="none" stroke="black" cx="337" cy="-427.87" rx="94.0904" ry="26.7407"/>
+<text text-anchor="middle" x="337" y="-431.67" font-family="Times,serif" font-size="14.00">send bereq,</text>
+<text text-anchor="middle" x="337" y="-416.67" font-family="Times,serif" font-size="14.00">read beresp (headers)</text>
+</g>
+<!-- v_b_f->v_b_hdrs -->
+<g id="edge5" class="edge"><title>v_b_f:fetch:s->v_b_hdrs</title>
+<path fill="none" stroke="black" stroke-width="2" d="M337,-491.74C337,-483.127 337,-473.849 337,-465.136"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="340.5,-464.87 337,-454.87 333.5,-464.87 340.5,-464.87"/>
+</g>
+<!-- v_b_r -->
+<g id="node6" class="node"><title>v_b_r</title>
+<polygon fill="none" stroke="black" points="343,-248.5 343,-363.5 581,-363.5 581,-248.5 343,-248.5"/>
+<text text-anchor="middle" x="462" y="-348.3" font-family="Times,serif" font-size="14.00">vbf_stp_startfetch:</text>
+<polyline fill="none" stroke="black" points="343,-340.5 581,-340.5 "/>
+<text text-anchor="middle" x="425" y="-313.8" font-family="Times,serif" font-size="14.00">vcl_backend_response{}</text>
+<polyline fill="none" stroke="black" points="507,-294.5 507,-340.5 "/>
+<text text-anchor="middle" x="544" y="-325.3" font-family="Times,serif" font-size="14.00">bereq.*</text>
+<polyline fill="none" stroke="black" points="507,-317.5 581,-317.5 "/>
+<text text-anchor="middle" x="544" y="-302.3" font-family="Times,serif" font-size="14.00">beresp.*</text>
+<polyline fill="none" stroke="black" points="343,-294.5 581,-294.5 "/>
+<text text-anchor="middle" x="384.5" y="-279.3" font-family="Times,serif" font-size="14.00">retry</text>
+<polyline fill="none" stroke="black" points="343,-271.5 426,-271.5 "/>
+<text text-anchor="middle" x="366.5" y="-256.3" font-family="Times,serif" font-size="14.00">max?</text>
+<polyline fill="none" stroke="black" points="390,-248.5 390,-271.5 "/>
+<text text-anchor="middle" x="408" y="-256.3" font-family="Times,serif" font-size="14.00">ok?</text>
+<polyline fill="none" stroke="black" points="426,-248.5 426,-294.5 "/>
+<text text-anchor="middle" x="457" y="-267.8" font-family="Times,serif" font-size="14.00">abandon</text>
+<polyline fill="none" stroke="black" points="488,-248.5 488,-294.5 "/>
+<text text-anchor="middle" x="534.5" y="-279.3" font-family="Times,serif" font-size="14.00">deliver</text>
+<polyline fill="none" stroke="black" points="488,-271.5 581,-271.5 "/>
+<text text-anchor="middle" x="509.5" y="-256.3" font-family="Times,serif" font-size="14.00">304?</text>
+<polyline fill="none" stroke="black" points="531,-248.5 531,-271.5 "/>
+<text text-anchor="middle" x="556" y="-256.3" font-family="Times,serif" font-size="14.00">other?</text>
+</g>
+<!-- v_b_hdrs->v_b_r -->
+<g id="edge6" class="edge"><title>v_b_hdrs->v_b_r</title>
+<path fill="none" stroke="black" stroke-width="2" d="M362.9,-402.033C372.553,-392.776 384.004,-381.795 395.634,-370.642"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="398.089,-373.137 402.885,-363.689 393.244,-368.085 398.089,-373.137"/>
+</g>
+<!-- v_b_e -->
+<g id="node7" class="node"><title>v_b_e</title>
+<polygon fill="none" stroke="black" points="160.5,-95.5 160.5,-210.5 359.5,-210.5 359.5,-95.5 160.5,-95.5"/>
+<text text-anchor="middle" x="260" y="-195.3" font-family="Times,serif" font-size="14.00">vbf_stp_error:</text>
+<polyline fill="none" stroke="black" points="160.5,-187.5 359.5,-187.5 "/>
+<text text-anchor="middle" x="227.5" y="-160.8" font-family="Times,serif" font-size="14.00">vcl_backend_error{}</text>
+<polyline fill="none" stroke="black" points="294.5,-141.5 294.5,-187.5 "/>
+<text text-anchor="middle" x="327" y="-172.3" font-family="Times,serif" font-size="14.00">bereq.*</text>
+<polyline fill="none" stroke="black" points="294.5,-164.5 359.5,-164.5 "/>
+<text text-anchor="middle" x="327" y="-149.3" font-family="Times,serif" font-size="14.00">beresp.*</text>
+<polyline fill="none" stroke="black" points="160.5,-141.5 359.5,-141.5 "/>
+<text text-anchor="middle" x="202" y="-126.3" font-family="Times,serif" font-size="14.00">retry</text>
+<polyline fill="none" stroke="black" points="160.5,-118.5 243.5,-118.5 "/>
+<text text-anchor="middle" x="184" y="-103.3" font-family="Times,serif" font-size="14.00">max?</text>
+<polyline fill="none" stroke="black" points="207.5,-95.5 207.5,-118.5 "/>
+<text text-anchor="middle" x="225.5" y="-103.3" font-family="Times,serif" font-size="14.00">ok?</text>
+<polyline fill="none" stroke="black" points="243.5,-95.5 243.5,-141.5 "/>
+<text text-anchor="middle" x="274.5" y="-114.8" font-family="Times,serif" font-size="14.00">abandon</text>
+<polyline fill="none" stroke="black" points="305.5,-95.5 305.5,-141.5 "/>
+<text text-anchor="middle" x="332.5" y="-114.8" font-family="Times,serif" font-size="14.00">deliver</text>
+</g>
+<!-- v_b_hdrs->v_b_e -->
+<g id="edge7" class="edge"><title>v_b_hdrs->v_b_e</title>
+<path fill="none" stroke="black" d="M329.617,-400.706C317.999,-359.535 295.09,-278.35 278.724,-220.355"/>
+<polygon fill="black" stroke="black" points="282.038,-219.209 275.953,-210.535 275.301,-221.11 282.038,-219.209"/>
+</g>
+<!-- v_b_r->v_b_e -->
+<g id="edge9" class="edge"><title>v_b_r:max->v_b_e</title>
+<path fill="none" stroke="black" d="M342,-260C316.941,-260 298.454,-241.238 285.443,-219.501"/>
+<polygon fill="black" stroke="black" points="288.476,-217.753 280.549,-210.724 282.363,-221.162 288.476,-217.753"/>
+</g>
+<!-- v_b_r_retry -->
+<g id="node8" class="node"><title>v_b_r_retry</title>
+<text text-anchor="middle" x="408" y="-149.3" font-family="Times,serif" font-size="14.00">RETRY</text>
+</g>
+<!-- v_b_r->v_b_r_retry -->
+<g id="edge8" class="edge"><title>v_b_r:retry->v_b_r_retry</title>
+<path fill="none" stroke="purple" d="M408,-248C408,-225.627 408,-200.259 408,-181.52"/>
+<polygon fill="purple" stroke="purple" points="411.5,-181.325 408,-171.325 404.5,-181.325 411.5,-181.325"/>
+</g>
+<!-- vbf_stp_condfetch -->
+<g id="node9" class="node"><title>vbf_stp_condfetch</title>
+<polygon fill="none" stroke="grey" points="456.5,-107 456.5,-199 577.5,-199 577.5,-107 456.5,-107"/>
+<text text-anchor="middle" x="517" y="-183.8" font-family="Times,serif" font-size="14.00" fill="grey">vbf_stp_condfetch:</text>
+<polyline fill="none" stroke="grey" points="456.5,-176 577.5,-176 "/>
+<text text-anchor="middle" x="517" y="-160.8" font-family="Times,serif" font-size="14.00" fill="grey">copy obj attr</text>
+<polyline fill="none" stroke="grey" points="456.5,-153 577.5,-153 "/>
+<text text-anchor="middle" x="517" y="-137.8" font-family="Times,serif" font-size="14.00" fill="grey">steal body</text>
+<polyline fill="none" stroke="grey" points="456.5,-130 577.5,-130 "/>
+<text text-anchor="middle" x="496" y="-114.8" font-family="Times,serif" font-size="14.00" fill="grey">fetch_fail?</text>
+<polyline fill="none" stroke="grey" points="535.5,-107 535.5,-130 "/>
+<text text-anchor="middle" x="556.5" y="-114.8" font-family="Times,serif" font-size="14.00" fill="grey">ok?</text>
+</g>
+<!-- v_b_r->vbf_stp_condfetch -->
+<g id="edge10" class="edge"><title>v_b_r:fetch_304:s->vbf_stp_condfetch</title>
+<path fill="none" stroke="black" d="M510,-248C510,-235.475 510.626,-222.036 511.503,-209.351"/>
+<polygon fill="black" stroke="black" points="514.994,-209.604 512.253,-199.37 508.013,-209.08 514.994,-209.604"/>
+</g>
+<!-- vbf_stp_fetch -->
+<g id="node10" class="node"><title>vbf_stp_fetch</title>
+<polygon fill="none" stroke="grey" points="595.5,-107 595.5,-199 754.5,-199 754.5,-107 595.5,-107"/>
+<text text-anchor="middle" x="675" y="-183.8" font-family="Times,serif" font-size="14.00" fill="grey">vbf_stp_fetch:</text>
+<polyline fill="none" stroke="grey" points="595.5,-176 754.5,-176 "/>
+<text text-anchor="middle" x="675" y="-160.8" font-family="Times,serif" font-size="14.00" fill="grey">setup VFPs</text>
+<polyline fill="none" stroke="grey" points="595.5,-153 754.5,-153 "/>
+<text text-anchor="middle" x="675" y="-137.8" font-family="Times,serif" font-size="14.00" fill="grey">fetch</text>
+<polyline fill="none" stroke="grey" points="595.5,-130 754.5,-130 "/>
+<text text-anchor="middle" x="632.5" y="-114.8" font-family="Times,serif" font-size="14.00" fill="grey">fetch_fail?</text>
+<polyline fill="none" stroke="grey" points="669.5,-107 669.5,-130 "/>
+<text text-anchor="middle" x="694" y="-114.8" font-family="Times,serif" font-size="14.00" fill="grey">error?</text>
+<polyline fill="none" stroke="grey" points="718.5,-107 718.5,-130 "/>
+<text text-anchor="middle" x="736.5" y="-114.8" font-family="Times,serif" font-size="14.00" fill="grey">ok?</text>
+</g>
+<!-- v_b_r->vbf_stp_fetch -->
+<g id="edge11" class="edge"><title>v_b_r:non_304:s->vbf_stp_fetch</title>
+<path fill="none" stroke="black" d="M556,-248C556,-240.963 576.756,-223.409 600.93,-205.349"/>
+<polygon fill="black" stroke="black" points="603.268,-207.974 609.235,-199.219 599.111,-202.342 603.268,-207.974"/>
+</g>
+<!-- FETCH_DONE -->
+<g id="node11" class="node"><title>FETCH_DONE</title>
+<polygon fill="turquoise" stroke="turquoise" points="609,-44 505,-44 505,-8 609,-8 609,-44"/>
+<text text-anchor="middle" x="557" y="-22.3" font-family="Times,serif" font-size="14.00">FETCH_DONE</text>
+</g>
+<!-- v_b_e->FETCH_DONE -->
+<g id="edge15" class="edge"><title>v_b_e:deliver->FETCH_DONE</title>
+<path fill="none" stroke="black" d="M361,-118C371.823,-118 361.394,-102.7 369,-95 402.574,-61.0096 454.397,-43.9123 495.137,-35.3685"/>
+<polygon fill="black" stroke="black" points="495.84,-38.7973 504.972,-33.4249 494.483,-31.9301 495.84,-38.7973"/>
+<text text-anchor="middle" x="457.5" y="-65.8" font-family="Times,serif" font-size="14.00">"backend synth"</text>
+</g>
+<!-- FETCH_FAIL -->
+<g id="node13" class="node"><title>FETCH_FAIL</title>
+<polygon fill="turquoise" stroke="turquoise" points="159,-44 63,-44 63,-8 159,-8 159,-44"/>
+<text text-anchor="middle" x="111" y="-22.3" font-family="Times,serif" font-size="14.00">FETCH_FAIL</text>
+</g>
+<!-- v_b_e->FETCH_FAIL -->
+<g id="edge17" class="edge"><title>v_b_e:max:s->FETCH_FAIL</title>
+<path fill="none" stroke="black" d="M184,-95C184,-76.148 170.804,-61.0342 155.633,-49.8878"/>
+<polygon fill="black" stroke="black" points="157.318,-46.8026 147.072,-44.105 153.399,-52.6031 157.318,-46.8026"/>
+</g>
+<!-- v_b_e_retry -->
+<g id="node14" class="node"><title>v_b_e_retry</title>
+<text text-anchor="middle" x="225" y="-22.3" font-family="Times,serif" font-size="14.00">RETRY</text>
+</g>
+<!-- v_b_e->v_b_e_retry -->
+<g id="edge16" class="edge"><title>v_b_e:retry->v_b_e_retry</title>
+<path fill="none" stroke="purple" d="M225,-95C225,-81.5776 225,-66.665 225,-54.2333"/>
+<polygon fill="purple" stroke="purple" points="228.5,-54.0469 225,-44.0469 221.5,-54.0469 228.5,-54.0469"/>
+</g>
+<!-- vbf_stp_condfetch->FETCH_DONE -->
+<g id="edge13" class="edge"><title>vbf_stp_condfetch:ok:s->FETCH_DONE</title>
+<path fill="none" stroke="black" d="M557,-106C557,-88.8934 557,-69.7032 557,-54.5204"/>
+<polygon fill="black" stroke="black" points="560.5,-54.2602 557,-44.2603 553.5,-54.2603 560.5,-54.2602"/>
+</g>
+<!-- vbf_stp_fetch->FETCH_DONE -->
+<g id="edge12" class="edge"><title>vbf_stp_fetch:ok:s->FETCH_DONE</title>
+<path fill="none" stroke="black" d="M737,-106C737,-53.2094 671.279,-35.3719 619.261,-29.5215"/>
+<polygon fill="black" stroke="black" points="619.361,-26.0142 609.063,-28.5044 618.667,-32.9797 619.361,-26.0142"/>
+</g>
+<!-- error -->
+<g id="node12" class="node"><title>error</title>
+<text text-anchor="middle" x="35" y="-149.3" font-family="Times,serif" font-size="14.00">error</text>
+</g>
+<!-- error->FETCH_FAIL -->
+<g id="edge14" class="edge"><title>error->FETCH_FAIL</title>
+<path fill="none" stroke="black" d="M45.4081,-134.881C58.2412,-113.774 80.1833,-77.6853 95.124,-53.1119"/>
+<polygon fill="black" stroke="black" points="98.2691,-54.6759 100.474,-44.313 92.2879,-51.0393 98.2691,-54.6759"/>
+</g>
+<!-- abandon -->
+<g id="node15" class="node"><title>abandon</title>
+<text text-anchor="middle" x="111" y="-149.3" font-family="Times,serif" font-size="14.00">abandon</text>
+</g>
+<!-- abandon->FETCH_FAIL -->
+<g id="edge18" class="edge"><title>abandon->FETCH_FAIL</title>
+<path fill="none" stroke="black" d="M111,-134.881C111,-114.146 111,-78.9525 111,-54.4215"/>
+<polygon fill="black" stroke="black" points="114.5,-54.313 111,-44.313 107.5,-54.313 114.5,-54.313"/>
+</g>
+</g>
+</svg>
diff --git a/doc/graphviz/cache_http1_fsm.svg b/doc/graphviz/cache_http1_fsm.svg
new file mode 100644
index 0000000..65617c7
--- /dev/null
+++ b/doc/graphviz/cache_http1_fsm.svg
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+ -->
+<!-- Title: vcl_center Pages: 1 -->
+<svg width="614pt" height="606pt"
+ viewBox="36.00 36.00 577.54 570.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(40 566)">
+<title>vcl_center</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-530 537.544,-530 537.544,4 -4,4"/>
+<!-- acceptor -->
+<g id="node1" class="node"><title>acceptor</title>
+<ellipse fill="none" stroke="black" cx="413.544" cy="-508" rx="40.0939" ry="18"/>
+<text text-anchor="middle" x="413.544" y="-504.3" font-family="Times,serif" font-size="14.00">acceptor</text>
+</g>
+<!-- http1_wait -->
+<g id="node2" class="node"><title>http1_wait</title>
+<ellipse fill="none" stroke="black" cx="413.544" cy="-421" rx="48.1917" ry="18"/>
+<text text-anchor="middle" x="413.544" y="-417.3" font-family="Times,serif" font-size="14.00">http1_wait</text>
+</g>
+<!-- acceptor->http1_wait -->
+<g id="edge1" class="edge"><title>acceptor->http1_wait</title>
+<path fill="none" stroke="black" d="M413.544,-489.799C413.544,-478.163 413.544,-462.548 413.544,-449.237"/>
+<polygon fill="black" stroke="black" points="417.044,-449.175 413.544,-439.175 410.044,-449.175 417.044,-449.175"/>
+<text text-anchor="middle" x="465.044" y="-460.8" font-family="Times,serif" font-size="14.00">S_STP_NEWREQ</text>
+</g>
+<!-- CNT_Request -->
+<g id="node4" class="node"><title>CNT_Request</title>
+<ellipse fill="none" stroke="black" cx="123.544" cy="-319" rx="61.1893" ry="18"/>
+<text text-anchor="middle" x="123.544" y="-315.3" font-family="Times,serif" font-size="14.00">CNT_Request</text>
+</g>
+<!-- http1_wait->CNT_Request -->
+<g id="edge4" class="edge"><title>http1_wait->CNT_Request</title>
+<path fill="none" stroke="black" d="M365.828,-418.624C301.217,-415.905 190.213,-407.948 157.544,-385 144.546,-375.87 136.143,-360.207 130.942,-346.544"/>
+<polygon fill="black" stroke="black" points="134.25,-345.4 127.702,-337.071 127.627,-347.665 134.25,-345.4"/>
+<text text-anchor="middle" x="213.044" y="-373.8" font-family="Times,serif" font-size="14.00">S_STP_WORKING</text>
+<text text-anchor="middle" x="213.044" y="-358.8" font-family="Times,serif" font-size="14.00">R_STP_RECV</text>
+</g>
+<!-- disembark -->
+<g id="node5" class="node"><title>disembark</title>
+<ellipse fill="none" stroke="black" cx="331.544" cy="-91" rx="48.1917" ry="18"/>
+<text text-anchor="middle" x="331.544" y="-87.3" font-family="Times,serif" font-size="14.00">disembark</text>
+</g>
+<!-- http1_wait->disembark -->
+<g id="edge5" class="edge"><title>http1_wait->disembark</title>
+<path fill="none" stroke="black" d="M415.457,-402.989C417.361,-378.708 417.784,-333.462 399.544,-301 393.185,-289.684 382.782,-294.383 376.544,-283 343.071,-221.917 388.812,-191.094 361.544,-127 359.933,-123.214 357.76,-119.538 355.315,-116.079"/>
+<polygon fill="black" stroke="black" points="357.823,-113.612 348.842,-107.992 352.358,-117.987 357.823,-113.612"/>
+<text text-anchor="middle" x="413.044" y="-264.3" font-family="Times,serif" font-size="14.00">Session close</text>
+</g>
+<!-- http1_wait->disembark -->
+<g id="edge6" class="edge"><title>http1_wait->disembark</title>
+<path fill="none" stroke="green" d="M422.307,-403.301C437.002,-373.118 463.679,-307.551 449.544,-253 433.475,-190.986 421.974,-174.996 379.544,-127 375.151,-122.031 369.936,-117.349 364.589,-113.125"/>
+<polygon fill="green" stroke="green" points="366.294,-110.032 356.177,-106.886 362.124,-115.654 366.294,-110.032"/>
+<text text-anchor="middle" x="476.044" y="-264.3" font-family="Times,serif" font-size="14.00">Timeout</text>
+</g>
+<!-- hash -->
+<g id="node3" class="node"><title>hash</title>
+<ellipse fill="none" stroke="black" cx="136.544" cy="-18" rx="27" ry="18"/>
+<text text-anchor="middle" x="136.544" y="-14.3" font-family="Times,serif" font-size="14.00">hash</text>
+</g>
+<!-- hash->CNT_Request -->
+<g id="edge2" class="edge"><title>hash->CNT_Request</title>
+<path fill="none" stroke="blue" d="M115.322,-29.1756C84.8323,-45.1329 29.8514,-79.2306 7.54392,-127 -22.451,-191.231 49.4699,-261.077 93.1002,-295.8"/>
+<polygon fill="blue" stroke="blue" points="91.1075,-298.684 101.149,-302.065 95.4073,-293.16 91.1075,-298.684"/>
+<text text-anchor="middle" x="63.0439" y="-160.8" font-family="Times,serif" font-size="14.00">Busy object</text>
+<text text-anchor="middle" x="63.0439" y="-145.8" font-family="Times,serif" font-size="14.00">S_STP_WORKING</text>
+<text text-anchor="middle" x="63.0439" y="-130.8" font-family="Times,serif" font-size="14.00">R_STP_LOOKUP</text>
+</g>
+<!-- CNT_Request->disembark -->
+<g id="edge9" class="edge"><title>CNT_Request->disembark</title>
+<path fill="none" stroke="blue" d="M114.911,-301.078C102.927,-274.969 85.1119,-224.299 107.544,-190 144.65,-133.264 222.638,-109.177 276.058,-99.084"/>
+<polygon fill="blue" stroke="blue" points="276.832,-102.501 286.063,-97.3019 275.604,-95.6098 276.832,-102.501"/>
+<text text-anchor="middle" x="163.044" y="-223.8" font-family="Times,serif" font-size="14.00">Busy object</text>
+<text text-anchor="middle" x="163.044" y="-208.8" font-family="Times,serif" font-size="14.00">S_STP_WORKING</text>
+<text text-anchor="middle" x="163.044" y="-193.8" font-family="Times,serif" font-size="14.00">R_STP_LOOKUP</text>
+</g>
+<!-- http1_cleanup -->
+<g id="node7" class="node"><title>http1_cleanup</title>
+<ellipse fill="none" stroke="black" cx="287.544" cy="-212.5" rx="60.3893" ry="18"/>
+<text text-anchor="middle" x="287.544" y="-208.8" font-family="Times,serif" font-size="14.00">http1_cleanup</text>
+</g>
+<!-- CNT_Request->http1_cleanup -->
+<g id="edge10" class="edge"><title>CNT_Request->http1_cleanup</title>
+<path fill="none" stroke="black" d="M122.518,-300.739C122.631,-286.098 125.264,-265.533 137.544,-253 161.837,-228.206 179.978,-243.845 213.544,-235 221.094,-233.011 229.047,-230.811 236.828,-228.6"/>
+<polygon fill="black" stroke="black" points="237.902,-231.933 246.547,-225.809 235.969,-225.205 237.902,-231.933"/>
+</g>
+<!-- disembark->hash -->
+<g id="edge3" class="edge"><title>disembark->hash</title>
+<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M298.022,-77.7947C261.99,-64.6754 205.087,-43.9568 169.339,-30.9408"/>
+<polygon fill="blue" stroke="blue" points="170.446,-27.6192 159.852,-27.4866 168.051,-34.1967 170.446,-27.6192"/>
+</g>
+<!-- waiter -->
+<g id="node6" class="node"><title>waiter</title>
+<ellipse fill="none" stroke="black" cx="376.544" cy="-18" rx="32.4942" ry="18"/>
+<text text-anchor="middle" x="376.544" y="-14.3" font-family="Times,serif" font-size="14.00">waiter</text>
+</g>
+<!-- disembark->waiter -->
+<g id="edge7" class="edge"><title>disembark->waiter</title>
+<path fill="none" stroke="green" stroke-dasharray="1,5" d="M342.208,-73.174C347.78,-64.3831 354.705,-53.4564 360.874,-43.7236"/>
+<polygon fill="green" stroke="green" points="363.869,-45.5366 366.266,-35.2165 357.956,-41.7892 363.869,-45.5366"/>
+</g>
+<!-- waiter->http1_wait -->
+<g id="edge8" class="edge"><title>waiter->http1_wait</title>
+<path fill="none" stroke="green" d="M409.074,-19.7692C455.061,-22.7818 533.544,-35.8546 533.544,-90 533.544,-320 533.544,-320 533.544,-320 533.544,-361.025 491.641,-388.484 457.357,-404.084"/>
+<polygon fill="green" stroke="green" points="455.714,-400.982 447.931,-408.171 458.498,-407.404 455.714,-400.982"/>
+</g>
+<!-- http1_cleanup->http1_wait -->
+<g id="edge13" class="edge"><title>http1_cleanup->http1_wait</title>
+<path fill="none" stroke="black" d="M284.429,-230.778C280.813,-255.928 277.543,-303.29 296.544,-337 313.554,-367.178 346.622,-389.066 373.275,-402.763"/>
+<polygon fill="black" stroke="black" points="371.882,-405.979 382.398,-407.266 374.981,-399.702 371.882,-405.979"/>
+<text text-anchor="middle" x="348.044" y="-315.3" font-family="Times,serif" font-size="14.00">S_STP_NEWREQ</text>
+</g>
+<!-- http1_cleanup->CNT_Request -->
+<g id="edge12" class="edge"><title>http1_cleanup->CNT_Request</title>
+<path fill="none" stroke="black" d="M246.12,-225.676C208.748,-236.723 159.343,-251.509 157.544,-253 145.588,-262.907 137.308,-278.12 131.915,-291.339"/>
+<polygon fill="black" stroke="black" points="128.55,-290.345 128.34,-300.938 135.11,-292.788 128.55,-290.345"/>
+<text text-anchor="middle" x="213.044" y="-271.8" font-family="Times,serif" font-size="14.00">S_STP_WORKING</text>
+<text text-anchor="middle" x="213.044" y="-256.8" font-family="Times,serif" font-size="14.00">R_STP_RECV</text>
+</g>
+<!-- http1_cleanup->disembark -->
+<g id="edge11" class="edge"><title>http1_cleanup->disembark</title>
+<path fill="none" stroke="black" d="M283.67,-194.346C280.556,-176.557 278.212,-148.404 288.544,-127 291.002,-121.907 294.597,-117.309 298.677,-113.246"/>
+<polygon fill="black" stroke="black" points="301.159,-115.725 306.404,-106.52 296.563,-110.445 301.159,-115.725"/>
+<text text-anchor="middle" x="325.044" y="-145.8" font-family="Times,serif" font-size="14.00">Session close</text>
+</g>
+</g>
+</svg>
diff --git a/doc/graphviz/cache_req_fsm.svg b/doc/graphviz/cache_req_fsm.svg
new file mode 100644
index 0000000..d9976c3
--- /dev/null
+++ b/doc/graphviz/cache_req_fsm.svg
@@ -0,0 +1,438 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+ -->
+<!-- Title: cache_req_fsm Pages: 1 -->
+<svg width="837pt" height="1349pt"
+ viewBox="18.00 18.00 819.46 1331.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(22 1327)">
+<title>cache_req_fsm</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-1309 797.459,-1309 797.459,4 -4,4"/>
+<g id="clust3" class="cluster"><title>cluster_backend</title>
+<polygon fill="aliceblue" stroke="aliceblue" points="47,-299 47,-408 338,-408 338,-299 47,-299"/>
+</g>
+<!-- acceptor -->
+<g id="node1" class="node"><title>acceptor</title>
+<polygon fill="none" stroke="black" points="502.608,-1208.5 461.304,-1226.5 378.696,-1226.5 337.392,-1208.5 378.696,-1190.5 461.304,-1190.5 502.608,-1208.5"/>
+<text text-anchor="middle" x="420" y="-1204.8" font-family="Times,serif" font-size="14.00">Request received</text>
+</g>
+<!-- recv -->
+<g id="node4" class="node"><title>recv</title>
+<polygon fill="none" stroke="black" points="466,-1078.5 466,-1147.5 680,-1147.5 680,-1078.5 466,-1078.5"/>
+<text text-anchor="middle" x="573" y="-1132.3" font-family="Times,serif" font-size="14.00">cnt_recv:</text>
+<polyline fill="none" stroke="black" points="466,-1124.5 680,-1124.5 "/>
+<text text-anchor="middle" x="527.5" y="-1109.3" font-family="Times,serif" font-size="14.00">vcl_recv{}</text>
+<polyline fill="none" stroke="black" points="589,-1101.5 589,-1124.5 "/>
+<text text-anchor="middle" x="634.5" y="-1109.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="466,-1101.5 680,-1101.5 "/>
+<text text-anchor="middle" x="486.5" y="-1086.3" font-family="Times,serif" font-size="14.00">hash</text>
+<polyline fill="none" stroke="black" points="507,-1078.5 507,-1101.5 "/>
+<text text-anchor="middle" x="530.5" y="-1086.3" font-family="Times,serif" font-size="14.00">purge</text>
+<polyline fill="none" stroke="black" points="554,-1078.5 554,-1101.5 "/>
+<text text-anchor="middle" x="574" y="-1086.3" font-family="Times,serif" font-size="14.00">pass</text>
+<polyline fill="none" stroke="black" points="594,-1078.5 594,-1101.5 "/>
+<text text-anchor="middle" x="614" y="-1086.3" font-family="Times,serif" font-size="14.00">pipe</text>
+<polyline fill="none" stroke="black" points="634,-1078.5 634,-1101.5 "/>
+<text text-anchor="middle" x="657" y="-1086.3" font-family="Times,serif" font-size="14.00">synth</text>
+</g>
+<!-- acceptor->recv -->
+<g id="edge2" class="edge"><title>acceptor->recv</title>
+<path fill="none" stroke="black" stroke-width="2" d="M448.063,-1190.35C465.274,-1179.83 488.043,-1165.92 509.425,-1152.85"/>
+<polygon fill="black" stroke="black" stroke-width="2" points="511.458,-1155.71 518.165,-1147.51 507.807,-1149.74 511.458,-1155.71"/>
+</g>
+<!-- ESI_REQ -->
+<g id="node2" class="node"><title>ESI_REQ</title>
+<polygon fill="none" stroke="black" points="627.07,-1208.5 600.535,-1226.5 547.465,-1226.5 520.93,-1208.5 547.465,-1190.5 600.535,-1190.5 627.07,-1208.5"/>
+<text text-anchor="middle" x="574" y="-1204.8" font-family="Times,serif" font-size="14.00">ESI_REQ</text>
+</g>
+<!-- ESI_REQ->recv -->
+<g id="edge1" class="edge"><title>ESI_REQ->recv</title>
+<path fill="none" stroke="black" d="M573.817,-1190.35C573.718,-1181.14 573.592,-1169.31 573.468,-1157.74"/>
+<polygon fill="black" stroke="black" points="576.967,-1157.66 573.36,-1147.7 569.968,-1157.74 576.967,-1157.66"/>
+</g>
+<!-- RESTART -->
+<g id="node3" class="node"><title>RESTART</title>
+<text text-anchor="middle" x="710" y="-1283.3" font-family="Times,serif" font-size="14.00">RESTART</text>
+</g>
+<!-- restart -->
+<g id="node22" class="node"><title>restart</title>
+<polygon fill="none" stroke="grey" points="646,-1185.5 646,-1231.5 774,-1231.5 774,-1185.5 646,-1185.5"/>
+<text text-anchor="middle" x="710" y="-1216.3" font-family="Times,serif" font-size="14.00" fill="grey">cnt_restart:</text>
+<polyline fill="none" stroke="grey" points="646,-1208.5 774,-1208.5 "/>
+<text text-anchor="middle" x="664" y="-1193.3" font-family="Times,serif" font-size="14.00" fill="grey">ok?</text>
+<polyline fill="none" stroke="grey" points="682,-1185.5 682,-1208.5 "/>
+<text text-anchor="middle" x="728" y="-1193.3" font-family="Times,serif" font-size="14.00" fill="grey">max_restarts?</text>
+</g>
+<!-- RESTART->restart -->
+<g id="edge28" class="edge"><title>RESTART->restart</title>
+<path fill="none" stroke="purple" d="M710,-1268.64C710,-1260.7 710,-1251.02 710,-1241.81"/>
+<polygon fill="purple" stroke="purple" points="713.5,-1241.74 710,-1231.74 706.5,-1241.74 713.5,-1241.74"/>
+</g>
+<!-- pass -->
+<g id="node19" class="node"><title>pass</title>
+<polygon fill="none" stroke="black" points="223,-445.5 223,-514.5 363,-514.5 363,-445.5 223,-445.5"/>
+<text text-anchor="middle" x="293" y="-499.3" font-family="Times,serif" font-size="14.00">cnt_pass:</text>
+<polyline fill="none" stroke="black" points="223,-491.5 363,-491.5 "/>
+<text text-anchor="middle" x="266" y="-476.3" font-family="Times,serif" font-size="14.00">vcl_pass{}</text>
+<polyline fill="none" stroke="black" points="309,-468.5 309,-491.5 "/>
+<text text-anchor="middle" x="336" y="-476.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="223,-468.5 363,-468.5 "/>
+<text text-anchor="middle" x="245" y="-453.3" font-family="Times,serif" font-size="14.00">fetch</text>
+<polyline fill="none" stroke="black" points="267,-445.5 267,-468.5 "/>
+<text text-anchor="middle" x="290" y="-453.3" font-family="Times,serif" font-size="14.00">synth</text>
+<polyline fill="none" stroke="black" points="313,-445.5 313,-468.5 "/>
+<text text-anchor="middle" x="338" y="-453.3" font-family="Times,serif" font-size="14.00">restart</text>
+</g>
+<!-- recv->pass -->
+<g id="edge33" class="edge"><title>recv:pass->pass</title>
+<path fill="none" stroke="red" stroke-width="2" d="M574,-1078C574,-1036.22 575,-1025.78 575,-984 575,-984 575,-984 575,-615 575,-525.019 456.424,-495.389 373.053,-485.677"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="373.391,-482.193 363.07,-484.588 372.632,-489.152 373.391,-482.193"/>
+</g>
+<!-- pipe -->
+<g id="node20" class="node"><title>pipe</title>
+<polygon fill="none" stroke="black" points="619,-925.5 619,-1040.5 753,-1040.5 753,-925.5 619,-925.5"/>
+<text text-anchor="middle" x="686" y="-1025.3" font-family="Times,serif" font-size="14.00">cnt_pipe:</text>
+<polyline fill="none" stroke="black" points="619,-1017.5 753,-1017.5 "/>
+<text text-anchor="middle" x="686" y="-1002.3" font-family="Times,serif" font-size="14.00">filter req.*->bereq.*</text>
+<polyline fill="none" stroke="black" points="619,-994.5 753,-994.5 "/>
+<text text-anchor="middle" x="657.5" y="-967.8" font-family="Times,serif" font-size="14.00">vcl_pipe{}</text>
+<polyline fill="none" stroke="black" points="696,-948.5 696,-994.5 "/>
+<text text-anchor="middle" x="724.5" y="-979.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="696,-971.5 753,-971.5 "/>
+<text text-anchor="middle" x="724.5" y="-956.3" font-family="Times,serif" font-size="14.00">bereq.*</text>
+<polyline fill="none" stroke="black" points="619,-948.5 753,-948.5 "/>
+<text text-anchor="middle" x="651" y="-933.3" font-family="Times,serif" font-size="14.00">pipe</text>
+<polyline fill="none" stroke="black" points="683,-925.5 683,-948.5 "/>
+<text text-anchor="middle" x="718" y="-933.3" font-family="Times,serif" font-size="14.00">synth</text>
+</g>
+<!-- recv->pipe -->
+<g id="edge32" class="edge"><title>recv:pipe->pipe</title>
+<path fill="none" stroke="orange" stroke-width="2" d="M614,-1078C614,-1068.08 616.557,-1058.57 620.707,-1049.65"/>
+<polygon fill="orange" stroke="orange" stroke-width="2" points="623.927,-1051.05 625.568,-1040.58 617.758,-1047.74 623.927,-1051.05"/>
+</g>
+<!-- hash -->
+<g id="node24" class="node"><title>hash</title>
+<polygon fill="none" stroke="black" points="423,-948.5 423,-1017.5 545,-1017.5 545,-948.5 423,-948.5"/>
+<text text-anchor="middle" x="484" y="-1002.3" font-family="Times,serif" font-size="14.00">cnt_recv:</text>
+<polyline fill="none" stroke="black" points="423,-994.5 545,-994.5 "/>
+<text text-anchor="middle" x="462" y="-979.3" font-family="Times,serif" font-size="14.00">vcl_hash{}</text>
+<polyline fill="none" stroke="black" points="501,-971.5 501,-994.5 "/>
+<text text-anchor="middle" x="523" y="-979.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="423,-971.5 545,-971.5 "/>
+<text text-anchor="middle" x="484" y="-956.3" font-family="Times,serif" font-size="14.00">lookup</text>
+</g>
+<!-- recv->hash -->
+<g id="edge31" class="edge"><title>recv:hash->hash</title>
+<path fill="none" stroke="green" stroke-width="2" d="M486,-1078C486,-1061.66 485.694,-1043.73 485.322,-1027.95"/>
+<polygon fill="green" stroke="green" stroke-width="2" points="488.82,-1027.84 485.07,-1017.93 481.823,-1028.02 488.82,-1027.84"/>
+</g>
+<!-- recv->hash -->
+<g id="edge36" class="edge"><title>recv:purge:s->hash</title>
+<path fill="none" stroke="purple" stroke-width="2" d="M530,-1078C530,-1060.08 523.17,-1042.01 514.774,-1026.57"/>
+<polygon fill="purple" stroke="purple" stroke-width="2" points="517.735,-1024.7 509.69,-1017.81 511.68,-1028.21 517.735,-1024.7"/>
+</g>
+<!-- SYNTH -->
+<g id="node5" class="node"><title>SYNTH</title>
+<text text-anchor="middle" x="378" y="-313.3" font-family="Times,serif" font-size="14.00">SYNTH</text>
+</g>
+<!-- synth -->
+<g id="node10" class="node"><title>synth</title>
+<polygon fill="none" stroke="black" points="256.5,-158 256.5,-250 389.5,-250 389.5,-158 256.5,-158"/>
+<text text-anchor="middle" x="323" y="-234.8" font-family="Times,serif" font-size="14.00">cnt_synth:</text>
+<polyline fill="none" stroke="black" points="256.5,-227 389.5,-227 "/>
+<text text-anchor="middle" x="298" y="-200.3" font-family="Times,serif" font-size="14.00">vcl_synth{}</text>
+<polyline fill="none" stroke="black" points="339.5,-181 339.5,-227 "/>
+<text text-anchor="middle" x="364.5" y="-211.8" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="339.5,-204 389.5,-204 "/>
+<text text-anchor="middle" x="364.5" y="-188.8" font-family="Times,serif" font-size="14.00">resp.*</text>
+<polyline fill="none" stroke="black" points="256.5,-181 389.5,-181 "/>
+<text text-anchor="middle" x="290.5" y="-165.8" font-family="Times,serif" font-size="14.00">deliver</text>
+<polyline fill="none" stroke="black" points="324.5,-158 324.5,-181 "/>
+<text text-anchor="middle" x="357" y="-165.8" font-family="Times,serif" font-size="14.00">restart</text>
+</g>
+<!-- SYNTH->synth -->
+<g id="edge8" class="edge"><title>SYNTH->synth</title>
+<path fill="none" stroke="purple" d="M369.406,-298.656C364.152,-288.052 357.113,-273.847 350.109,-259.71"/>
+<polygon fill="purple" stroke="purple" points="353.105,-257.875 345.529,-250.468 346.833,-260.983 353.105,-257.875"/>
+</g>
+<!-- deliver -->
+<g id="node6" class="node"><title>deliver</title>
+<polygon fill="none" stroke="black" points="88,-146.5 88,-261.5 238,-261.5 238,-146.5 88,-146.5"/>
+<text text-anchor="middle" x="163" y="-246.3" font-family="Times,serif" font-size="14.00">cnt_deliver:</text>
+<polyline fill="none" stroke="black" points="88,-238.5 238,-238.5 "/>
+<text text-anchor="middle" x="163" y="-223.3" font-family="Times,serif" font-size="14.00">Filter obj.->resp.</text>
+<polyline fill="none" stroke="black" points="88,-215.5 238,-215.5 "/>
+<text text-anchor="middle" x="135.5" y="-188.8" font-family="Times,serif" font-size="14.00">vcl_deliver{}</text>
+<polyline fill="none" stroke="black" points="183,-169.5 183,-215.5 "/>
+<text text-anchor="middle" x="210.5" y="-200.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="183,-192.5 238,-192.5 "/>
+<text text-anchor="middle" x="210.5" y="-177.3" font-family="Times,serif" font-size="14.00">resp.*</text>
+<polyline fill="none" stroke="black" points="88,-169.5 238,-169.5 "/>
+<text text-anchor="middle" x="113" y="-154.3" font-family="Times,serif" font-size="14.00">restart</text>
+<polyline fill="none" stroke="black" points="138,-146.5 138,-169.5 "/>
+<text text-anchor="middle" x="165" y="-154.3" font-family="Times,serif" font-size="14.00">deliver</text>
+<polyline fill="none" stroke="black" points="192,-146.5 192,-169.5 "/>
+<text text-anchor="middle" x="215" y="-154.3" font-family="Times,serif" font-size="14.00">synth</text>
+</g>
+<!-- V1D_Deliver -->
+<g id="node7" class="node"><title>V1D_Deliver</title>
+<ellipse fill="none" stroke="black" cx="218" cy="-91" rx="58.4896" ry="18"/>
+<text text-anchor="middle" x="218" y="-87.3" font-family="Times,serif" font-size="14.00">V1D_Deliver</text>
+</g>
+<!-- deliver->V1D_Deliver -->
+<g id="edge3" class="edge"><title>deliver:deliver:s->V1D_Deliver</title>
+<path fill="none" stroke="green" stroke-width="2" d="M165,-146C157.436,-131.868 162.41,-120.078 172.056,-111.156"/>
+<polygon fill="green" stroke="green" stroke-width="2" points="174.406,-113.764 180.212,-104.902 170.147,-108.21 174.406,-113.764"/>
+</g>
+<!-- deliver->V1D_Deliver -->
+<g id="edge4" class="edge"><title>deliver:deliver:s->V1D_Deliver</title>
+<path fill="none" stroke="red" stroke-width="2" d="M165,-146C165,-133.044 172.868,-122.055 182.54,-113.441"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="184.925,-116.016 190.569,-107.05 180.565,-110.54 184.925,-116.016"/>
+</g>
+<!-- deliver->V1D_Deliver -->
+<g id="edge5" class="edge"><title>deliver:deliver:s->V1D_Deliver</title>
+<path fill="none" stroke="blue" stroke-width="2" d="M165,-146C171.668,-133.543 183.138,-122.906 194.023,-114.449"/>
+<polygon fill="blue" stroke="blue" stroke-width="2" points="196.205,-117.187 202.143,-108.412 192.029,-111.569 196.205,-117.187"/>
+</g>
+<!-- DONE -->
+<g id="node9" class="node"><title>DONE</title>
+<ellipse fill="none" stroke="black" cx="552" cy="-18" rx="35.194" ry="18"/>
+<text text-anchor="middle" x="552" y="-14.3" font-family="Times,serif" font-size="14.00">DONE</text>
+</g>
+<!-- V1D_Deliver->DONE -->
+<g id="edge7" class="edge"><title>V1D_Deliver->DONE</title>
+<path fill="none" stroke="black" d="M264.793,-80.053C330.099,-66.1707 447.576,-41.1979 510.132,-27.9001"/>
+<polygon fill="black" stroke="black" points="510.997,-31.2946 520.05,-25.7917 509.541,-24.4476 510.997,-31.2946"/>
+</g>
+<!-- stream -->
+<g id="node8" class="node"><title>stream</title>
+<ellipse fill="turquoise" stroke="turquoise" cx="449" cy="-204" rx="41.9398" ry="26.7407"/>
+<text text-anchor="middle" x="449" y="-207.8" font-family="Times,serif" font-size="14.00">stream?</text>
+<text text-anchor="middle" x="449" y="-192.8" font-family="Times,serif" font-size="14.00">body</text>
+</g>
+<!-- stream->V1D_Deliver -->
+<g id="edge6" class="edge"><title>stream->V1D_Deliver</title>
+<path fill="none" stroke="black" stroke-dasharray="1,5" d="M432.499,-179.068C423.495,-167.606 411.448,-154.547 398,-146 362.135,-123.204 316.167,-109.626 279.663,-101.787"/>
+<polygon fill="black" stroke="black" points="280.134,-98.3108 269.634,-99.7253 278.724,-105.167 280.134,-98.3108"/>
+</g>
+<!-- synth->V1D_Deliver -->
+<g id="edge9" class="edge"><title>synth:del:s->V1D_Deliver</title>
+<path fill="none" stroke="purple" d="M290,-157C290,-137.353 275.047,-122.114 258.77,-111.346"/>
+<polygon fill="purple" stroke="purple" points="260.569,-108.343 250.209,-106.122 256.923,-114.319 260.569,-108.343"/>
+</g>
+<!-- see backend graph -->
+<g id="node11" class="node"><title>see backend graph</title>
+<text text-anchor="middle" x="279" y="-386.3" font-family="Times,serif" font-size="14.00">see backend graph</text>
+</g>
+<!-- BGFETCH -->
+<g id="node12" class="node"><title>BGFETCH</title>
+<polygon fill="turquoise" stroke="turquoise" points="125,-408 47,-408 47,-372 125,-372 125,-408"/>
+<text text-anchor="middle" x="86" y="-386.3" font-family="Times,serif" font-size="14.00">BGFETCH</text>
+</g>
+<!-- FETCH -->
+<g id="node13" class="node"><title>FETCH</title>
+<polygon fill="turquoise" stroke="turquoise" points="202.5,-408 143.5,-408 143.5,-372 202.5,-372 202.5,-408"/>
+<text text-anchor="middle" x="173" y="-386.3" font-family="Times,serif" font-size="14.00">FETCH</text>
+</g>
+<!-- FETCH_DONE -->
+<g id="node14" class="node"><title>FETCH_DONE</title>
+<polygon fill="turquoise" stroke="turquoise" points="215,-335 111,-335 111,-299 215,-299 215,-335"/>
+<text text-anchor="middle" x="163" y="-313.3" font-family="Times,serif" font-size="14.00">FETCH_DONE</text>
+</g>
+<!-- FETCH->FETCH_DONE -->
+<g id="edge14" class="edge"><title>FETCH->FETCH_DONE</title>
+<path fill="none" stroke="black" stroke-dasharray="1,5" d="M170.579,-371.813C169.449,-363.789 168.077,-354.047 166.813,-345.069"/>
+<polygon fill="black" stroke="black" points="170.259,-344.443 165.398,-335.029 163.327,-345.419 170.259,-344.443"/>
+</g>
+<!-- FETCH_FAIL -->
+<g id="node15" class="node"><title>FETCH_FAIL</title>
+<polygon fill="turquoise" stroke="turquoise" points="329,-335 233,-335 233,-299 329,-299 329,-335"/>
+<text text-anchor="middle" x="281" y="-313.3" font-family="Times,serif" font-size="14.00">FETCH_FAIL</text>
+</g>
+<!-- FETCH->FETCH_FAIL -->
+<g id="edge15" class="edge"><title>FETCH->FETCH_FAIL</title>
+<path fill="none" stroke="black" stroke-dasharray="1,5" d="M198.869,-371.994C213.058,-362.666 230.842,-350.974 246.23,-340.858"/>
+<polygon fill="black" stroke="black" points="248.535,-343.532 254.968,-335.114 244.689,-337.682 248.535,-343.532"/>
+</g>
+<!-- FETCH_DONE->deliver -->
+<g id="edge12" class="edge"><title>FETCH_DONE->deliver</title>
+<path fill="none" stroke="red" stroke-width="2" d="M157.938,-298.656C157.117,-291.065 156.595,-281.628 156.373,-271.691"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="159.873,-271.595 156.251,-261.638 152.873,-271.68 159.873,-271.595"/>
+</g>
+<!-- FETCH_DONE->deliver -->
+<g id="edge13" class="edge"><title>FETCH_DONE->deliver</title>
+<path fill="none" stroke="blue" stroke-width="2" d="M168.062,-298.656C168.883,-291.065 169.405,-281.628 169.627,-271.691"/>
+<polygon fill="blue" stroke="blue" stroke-width="2" points="173.127,-271.68 169.749,-261.638 166.127,-271.595 173.127,-271.68"/>
+</g>
+<!-- FETCH_FAIL->synth -->
+<g id="edge11" class="edge"><title>FETCH_FAIL->synth</title>
+<path fill="none" stroke="purple" d="M287.562,-298.656C291.537,-288.153 296.848,-274.117 302.146,-260.114"/>
+<polygon fill="purple" stroke="purple" points="305.53,-261.06 305.796,-250.468 298.983,-258.582 305.53,-261.06"/>
+</g>
+<!-- lookup2 -->
+<g id="node16" class="node"><title>lookup2</title>
+<polygon fill="none" stroke="black" points="0,-688.5 0,-780.5 232,-780.5 232,-688.5 0,-688.5"/>
+<text text-anchor="middle" x="116" y="-765.3" font-family="Times,serif" font-size="14.00">cnt_lookup:</text>
+<polyline fill="none" stroke="black" points="0,-757.5 232,-757.5 "/>
+<text text-anchor="middle" x="64" y="-730.8" font-family="Times,serif" font-size="14.00">vcl_hit{}</text>
+<polyline fill="none" stroke="black" points="128,-711.5 128,-757.5 "/>
+<text text-anchor="middle" x="180" y="-742.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="128,-734.5 232,-734.5 "/>
+<text text-anchor="middle" x="180" y="-719.3" font-family="Times,serif" font-size="14.00">obj.*</text>
+<polyline fill="none" stroke="black" points="0,-711.5 232,-711.5 "/>
+<text text-anchor="middle" x="27" y="-696.3" font-family="Times,serif" font-size="14.00">deliver</text>
+<polyline fill="none" stroke="black" points="54,-688.5 54,-711.5 "/>
+<text text-anchor="middle" x="75" y="-696.3" font-family="Times,serif" font-size="14.00">miss</text>
+<polyline fill="none" stroke="black" points="96,-688.5 96,-711.5 "/>
+<text text-anchor="middle" x="121" y="-696.3" font-family="Times,serif" font-size="14.00">restart</text>
+<polyline fill="none" stroke="black" points="146,-688.5 146,-711.5 "/>
+<text text-anchor="middle" x="169" y="-696.3" font-family="Times,serif" font-size="14.00">synth</text>
+<polyline fill="none" stroke="black" points="192,-688.5 192,-711.5 "/>
+<text text-anchor="middle" x="212" y="-696.3" font-family="Times,serif" font-size="14.00">pass</text>
+</g>
+<!-- lookup2->deliver -->
+<g id="edge20" class="edge"><title>lookup2:deliver:s->deliver:n</title>
+<path fill="none" stroke="green" stroke-width="2" d="M27,-688C27,-656.245 19,-648.755 19,-617 19,-617 19,-617 19,-316 19,-251.519 147.149,-321.468 161.666,-272.216"/>
+<polygon fill="green" stroke="green" stroke-width="2" points="165.176,-272.369 163,-262 158.235,-271.463 165.176,-272.369"/>
+</g>
+<!-- lookup2->BGFETCH -->
+<g id="edge10" class="edge"><title>lookup2:deliver:s->BGFETCH</title>
+<path fill="none" stroke="green" d="M27,-688C27,-679.567 30.9334,-678.176 33,-670 48.149,-610.069 45.481,-593.733 57,-533 64.6083,-492.885 74.2231,-446.572 80.2438,-418.035"/>
+<polygon fill="green" stroke="green" points="83.7172,-418.527 82.3636,-408.019 76.8689,-417.077 83.7172,-418.527"/>
+<text text-anchor="middle" x="94" y="-551.8" font-family="Times,serif" font-size="14.00">parallel</text>
+<text text-anchor="middle" x="94" y="-536.8" font-family="Times,serif" font-size="14.00">if obj expired</text>
+</g>
+<!-- miss -->
+<g id="node18" class="node"><title>miss</title>
+<polygon fill="none" stroke="black" points="85,-581.5 85,-650.5 265,-650.5 265,-581.5 85,-581.5"/>
+<text text-anchor="middle" x="175" y="-635.3" font-family="Times,serif" font-size="14.00">cnt_miss:</text>
+<polyline fill="none" stroke="black" points="85,-627.5 265,-627.5 "/>
+<text text-anchor="middle" x="138.5" y="-612.3" font-family="Times,serif" font-size="14.00">vcl_miss{}</text>
+<polyline fill="none" stroke="black" points="192,-604.5 192,-627.5 "/>
+<text text-anchor="middle" x="228.5" y="-612.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="85,-604.5 265,-604.5 "/>
+<text text-anchor="middle" x="107" y="-589.3" font-family="Times,serif" font-size="14.00">fetch</text>
+<polyline fill="none" stroke="black" points="129,-581.5 129,-604.5 "/>
+<text text-anchor="middle" x="152" y="-589.3" font-family="Times,serif" font-size="14.00">synth</text>
+<polyline fill="none" stroke="black" points="175,-581.5 175,-604.5 "/>
+<text text-anchor="middle" x="200" y="-589.3" font-family="Times,serif" font-size="14.00">restart</text>
+<polyline fill="none" stroke="black" points="225,-581.5 225,-604.5 "/>
+<text text-anchor="middle" x="245" y="-589.3" font-family="Times,serif" font-size="14.00">pass</text>
+</g>
+<!-- lookup2->miss -->
+<g id="edge21" class="edge"><title>lookup2:miss:s->miss</title>
+<path fill="none" stroke="blue" stroke-width="2" d="M75,-688C75,-676.143 79.7319,-666.085 87.137,-657.604"/>
+<polygon fill="blue" stroke="blue" stroke-width="2" points="89.6233,-660.068 94.281,-650.552 84.7056,-655.086 89.6233,-660.068"/>
+</g>
+<!-- lookup2->pass -->
+<g id="edge22" class="edge"><title>lookup2:pass:s->pass</title>
+<path fill="none" stroke="red" stroke-width="2" d="M212,-688C212,-655.911 256.629,-677.981 274,-651 298.143,-613.501 300.499,-561.496 298.321,-524.909"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="301.783,-524.27 297.56,-514.553 294.802,-524.783 301.783,-524.27"/>
+</g>
+<!-- lookup -->
+<g id="node17" class="node"><title>lookup</title>
+<polygon fill="none" stroke="grey" points="98,-818.5 98,-887.5 316,-887.5 316,-818.5 98,-818.5"/>
+<text text-anchor="middle" x="207" y="-872.3" font-family="Times,serif" font-size="14.00" fill="grey">cnt_lookup:</text>
+<polyline fill="none" stroke="grey" points="98,-864.5 316,-864.5 "/>
+<text text-anchor="middle" x="207" y="-849.3" font-family="Times,serif" font-size="14.00" fill="grey">hash lookup</text>
+<polyline fill="none" stroke="grey" points="98,-841.5 316,-841.5 "/>
+<text text-anchor="middle" x="116.5" y="-826.3" font-family="Times,serif" font-size="14.00" fill="grey">hit?</text>
+<polyline fill="none" stroke="grey" points="135,-818.5 135,-841.5 "/>
+<text text-anchor="middle" x="159" y="-826.3" font-family="Times,serif" font-size="14.00" fill="grey">miss?</text>
+<polyline fill="none" stroke="grey" points="183,-818.5 183,-841.5 "/>
+<text text-anchor="middle" x="225.5" y="-826.3" font-family="Times,serif" font-size="14.00" fill="grey">hit-for-pass?</text>
+<polyline fill="none" stroke="grey" points="268,-818.5 268,-841.5 "/>
+<text text-anchor="middle" x="292" y="-826.3" font-family="Times,serif" font-size="14.00" fill="grey">busy?</text>
+</g>
+<!-- lookup->lookup2 -->
+<g id="edge19" class="edge"><title>lookup:h:s->lookup2</title>
+<path fill="none" stroke="green" stroke-width="2" d="M116,-818C116,-809.259 116,-799.996 116,-790.958"/>
+<polygon fill="green" stroke="green" stroke-width="2" points="119.5,-790.888 116,-780.888 112.5,-790.889 119.5,-790.888"/>
+</g>
+<!-- lookup->lookup -->
+<g id="edge16" class="edge"><title>lookup:busy:e->lookup:top:e</title>
+<path fill="none" stroke="grey" d="M316,-830C322,-817 334,-817 334,-853 334,-877.75 328.328,-885.484 322.833,-883.677"/>
+<polygon fill="grey" stroke="grey" points="325.263,-881.142 316,-876 320.034,-885.797 325.263,-881.142"/>
+<text text-anchor="middle" x="367.5" y="-849.3" font-family="Times,serif" font-size="14.00" fill="grey">(waitinglist)</text>
+</g>
+<!-- lookup->miss -->
+<g id="edge17" class="edge"><title>lookup:miss:s->miss</title>
+<path fill="none" stroke="blue" stroke-width="2" d="M159,-818C159,-778.017 219.308,-814.587 241,-781 263.425,-746.279 256.118,-726.469 241,-688 236.81,-677.339 230.183,-667.328 222.711,-658.375"/>
+<polygon fill="blue" stroke="blue" stroke-width="2" points="225.227,-655.938 215.966,-650.79 219.996,-660.589 225.227,-655.938"/>
+</g>
+<!-- lookup->pass -->
+<g id="edge18" class="edge"><title>lookup:hfp:s->pass</title>
+<path fill="none" stroke="red" stroke-width="2" d="M226,-818C226,-794.744 251.216,-801.05 263,-781 313.367,-695.3 305.717,-662.137 313,-563 313.977,-549.703 315.434,-546.109 313,-533 312.47,-530.147 311.79,-527.249 311.002,-524.355"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="314.281,-523.113 307.968,-514.604 307.597,-525.193 314.281,-523.113"/>
+</g>
+<!-- miss->FETCH -->
+<g id="edge23" class="edge"><title>miss:fetch:s->FETCH</title>
+<path fill="none" stroke="blue" stroke-width="2" d="M107,-581C107,-566.206 126.544,-575.139 135,-563 165.653,-518.997 172.142,-454.572 173.188,-418.35"/>
+<polygon fill="blue" stroke="blue" stroke-width="2" points="176.693,-418.125 173.359,-408.068 169.694,-418.008 176.693,-418.125"/>
+</g>
+<!-- miss->pass -->
+<g id="edge24" class="edge"><title>miss:pass:s->pass</title>
+<path fill="none" stroke="red" stroke-width="2" d="M245,-581C245,-561.014 252.889,-540.798 262.27,-523.823"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="265.553,-525.144 267.594,-514.748 259.515,-521.602 265.553,-525.144"/>
+</g>
+<!-- pass->FETCH -->
+<g id="edge25" class="edge"><title>pass:fetch:s->FETCH</title>
+<path fill="none" stroke="red" stroke-width="2" d="M245,-445C245,-435.486 228.709,-422.805 211.625,-412.122"/>
+<polygon fill="red" stroke="red" stroke-width="2" points="213.073,-408.908 202.701,-406.745 209.46,-414.904 213.073,-408.908"/>
+</g>
+<!-- pipe_do -->
+<g id="node21" class="node"><title>pipe_do</title>
+<ellipse fill="none" stroke="black" cx="698" cy="-853" rx="95.4188" ry="26.7407"/>
+<text text-anchor="middle" x="698" y="-856.8" font-family="Times,serif" font-size="14.00">send bereq,</text>
+<text text-anchor="middle" x="698" y="-841.8" font-family="Times,serif" font-size="14.00">copy bytes until close</text>
+</g>
+<!-- pipe->pipe_do -->
+<g id="edge26" class="edge"><title>pipe:pipe->pipe_do</title>
+<path fill="none" stroke="orange" stroke-width="2" d="M651,-925C651,-911.335 657.128,-898.282 664.958,-887.18"/>
+<polygon fill="orange" stroke="orange" stroke-width="2" points="667.862,-889.146 671.205,-879.092 662.322,-884.867 667.862,-889.146"/>
+</g>
+<!-- pipe_do->DONE -->
+<g id="edge27" class="edge"><title>pipe_do->DONE</title>
+<path fill="none" stroke="orange" stroke-width="2" d="M682.476,-826.166C670.159,-803.197 655,-768.27 655,-735.5 655,-735.5 655,-735.5 655,-90 655,-58.2915 621.5,-39.6576 592.711,-29.4983"/>
+<polygon fill="orange" stroke="orange" stroke-width="2" points="593.776,-26.1642 583.183,-26.3712 591.593,-32.8151 593.776,-26.1642"/>
+</g>
+<!-- restart->recv -->
+<g id="edge29" class="edge"><title>restart:ok:s->recv</title>
+<path fill="none" stroke="black" d="M664,-1185C664,-1173.49 659.422,-1163.58 652.319,-1155.12"/>
+<polygon fill="black" stroke="black" points="654.629,-1152.47 645.145,-1147.75 649.615,-1157.36 654.629,-1152.47"/>
+</g>
+<!-- err_restart -->
+<g id="node23" class="node"><title>err_restart</title>
+<text text-anchor="middle" x="729" y="-1109.3" font-family="Times,serif" font-size="14.00">SYNTH</text>
+</g>
+<!-- restart->err_restart -->
+<g id="edge30" class="edge"><title>restart:max:s->err_restart</title>
+<path fill="none" stroke="purple" d="M728,-1185C728,-1170.65 728.207,-1154.67 728.432,-1141.51"/>
+<polygon fill="purple" stroke="purple" points="731.937,-1141.28 728.622,-1131.22 724.938,-1141.15 731.937,-1141.28"/>
+</g>
+<!-- hash->lookup -->
+<g id="edge34" class="edge"><title>hash:lookup:w->lookup</title>
+<path fill="none" stroke="green" stroke-width="2" d="M422,-960C359.706,-960 296.753,-923.759 255.21,-893.659"/>
+<polygon fill="green" stroke="green" stroke-width="2" points="257.057,-890.672 246.936,-887.539 252.895,-896.3 257.057,-890.672"/>
+</g>
+<!-- purge -->
+<g id="node25" class="node"><title>purge</title>
+<polygon fill="none" stroke="black" points="419,-818.5 419,-887.5 547,-887.5 547,-818.5 419,-818.5"/>
+<text text-anchor="middle" x="483" y="-872.3" font-family="Times,serif" font-size="14.00">cnt_purge:</text>
+<polyline fill="none" stroke="black" points="419,-864.5 547,-864.5 "/>
+<text text-anchor="middle" x="461" y="-849.3" font-family="Times,serif" font-size="14.00">vcl_purge{}</text>
+<polyline fill="none" stroke="black" points="503,-841.5 503,-864.5 "/>
+<text text-anchor="middle" x="525" y="-849.3" font-family="Times,serif" font-size="14.00">req.*</text>
+<polyline fill="none" stroke="black" points="419,-841.5 547,-841.5 "/>
+<text text-anchor="middle" x="450" y="-826.3" font-family="Times,serif" font-size="14.00">synth</text>
+<polyline fill="none" stroke="black" points="481,-818.5 481,-841.5 "/>
+<text text-anchor="middle" x="514" y="-826.3" font-family="Times,serif" font-size="14.00">restart</text>
+</g>
+<!-- hash->purge -->
+<g id="edge35" class="edge"><title>hash:lookup:s->purge:top:n</title>
+<path fill="none" stroke="purple" stroke-width="2" d="M484,-947C484,-924.462 483.261,-916.457 483.054,-898.006"/>
+<polygon fill="purple" stroke="purple" stroke-width="2" points="486.554,-897.981 483,-888 479.554,-898.019 486.554,-897.981"/>
+</g>
+</g>
+</svg>



More information about the varnish-commit mailing list