summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2021-05-26 09:31:58 +0200
committerGravatar Christian Hesse <mail@eworm.de>2021-05-26 23:09:06 +0200
commitfbeb734571d738cea822c75b217350220ba80302 (patch)
tree4ae91723eb2baee35d50432dedc0cdaf22e497b0
parent708563c1642ec3130997136bab66adae10682202 (diff)
downloadpacredir-fbeb734571d738cea822c75b217350220ba80302.tar.gz
pacredir-fbeb734571d738cea822c75b217350220ba80302.tar.zst
document request flow
-rw-r--r--FLOW.md38
-rw-r--r--FLOW/fail.svg588
-rw-r--r--FLOW/ok.svg588
-rw-r--r--Makefile2
-rw-r--r--README.md3
5 files changed, 1219 insertions, 0 deletions
diff --git a/FLOW.md b/FLOW.md
new file mode 100644
index 0000000..7fd1f9b
--- /dev/null
+++ b/FLOW.md
@@ -0,0 +1,38 @@
+pacredir - request flow
+=======================
+
+[◀ Go back to main README](README.md)
+
+Whenever `pacman` sends a request to `pacredir` a number of requests
+(increasing with the number of hosts found) is sent through the network.
+Let's assume `pacredir` knows about two hosts.
+
+OK - serving from local network
+-------------------------------
+
+In this exemple one hast (`host A`) is missing the file, but second
+one (`host B`) does have the file.
+
+For database files the decision on what return code (`307` vs. `404`) to
+send is made on the file age. The local file's timestamp is compared to
+what timestamp `pacman` sends in its request.
+
+![OK - serving from local network](FLOW/ok.svg)
+
+After the initial request `pacman` is redirected to `host B` and gets the
+file there. No request is sent to the mirror.
+
+FAIL - fallback to mirror
+-------------------------
+
+In this example no host has the file or the local database files are older
+than what `pacman` requested.
+
+![FAIL - fallback to mirror](FLOW/fail.svg)
+
+All requests made by `pacredir` are answered with http code `404`, thus
+`pacman` receives the same. Finally `pacman` falls back to the next mirror.
+
+---
+[◀ Go back to main README](README.md)
+[▲ Go back to top](#top)
diff --git a/FLOW/fail.svg b/FLOW/fail.svg
new file mode 100644
index 0000000..c20be32
--- /dev/null
+++ b/FLOW/fail.svg
@@ -0,0 +1,588 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="134.04988mm"
+ height="148.86678mm"
+ viewBox="0 0 134.04988 148.86677"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
+ sodipodi:docname="fail.svg">
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path904" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lstart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path901" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0052508"
+ inkscape:cx="361.88955"
+ inkscape:cy="401.88998"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1047"
+ inkscape:window-x="0"
+ inkscape:window-y="33"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid847"
+ originx="0.49993972"
+ originy="0.50005597" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0.49993974,0.50005597)">
+ <g
+ id="g2389"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <g
+ id="g2374"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43162;stroke-linecap:round;stroke-linejoin:round"
+ id="rect849"
+ width="79.375"
+ height="211.66667"
+ x="0"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="39.465248"
+ y="10.555113"
+ id="text863"><tspan
+ sodipodi:role="line"
+ id="tspan861"
+ x="39.465248"
+ y="10.555113"
+ style="stroke-width:0.378785px">localhost</tspan></text>
+ </g>
+ <g
+ id="g2363"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.43162;stroke-linecap:round;stroke-linejoin:round"
+ id="rect857"
+ width="31.75"
+ height="190.5"
+ x="5.2916665"
+ y="15.875"
+ ry="0.70588279" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="21.141972"
+ y="24.962555"
+ id="text867"><tspan
+ sodipodi:role="line"
+ id="tspan865"
+ x="21.141972"
+ y="24.962555"
+ style="stroke-width:0.378785px">pacman</tspan></text>
+ </g>
+ <g
+ id="g2369"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.43162;stroke-linecap:round;stroke-linejoin:round"
+ id="rect859"
+ width="31.750002"
+ height="190.5"
+ x="42.333332"
+ y="15.875"
+ ry="0.70588279" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="57.98608"
+ y="25.890362"
+ id="text871"><tspan
+ sodipodi:role="line"
+ id="tspan869"
+ x="57.98608"
+ y="25.890362"
+ style="stroke-width:0.378785px">pacredir</tspan><tspan
+ sodipodi:role="line"
+ x="57.98608"
+ y="32.50494"
+ style="stroke-width:0.378785px"
+ id="tspan873" /></text>
+ </g>
+ </g>
+ <g
+ id="g2395"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round"
+ id="rect851"
+ width="31.75"
+ height="211.66667"
+ x="84.666664"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="100.42877"
+ y="6.5211"
+ id="text877"><tspan
+ sodipodi:role="line"
+ id="tspan875"
+ x="100.42877"
+ y="6.5211"
+ style="stroke-width:0.378785px">host A</tspan><tspan
+ sodipodi:role="line"
+ x="100.42877"
+ y="13.13568"
+ style="stroke-width:0.378785px"
+ id="tspan889">pacserve</tspan></text>
+ </g>
+ <g
+ id="g2401"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round"
+ id="rect853"
+ width="31.75"
+ height="211.66667"
+ x="121.70834"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="137.47044"
+ y="6.5211"
+ id="text881"><tspan
+ sodipodi:role="line"
+ id="tspan879"
+ x="137.47044"
+ y="6.5211"
+ style="stroke-width:0.378785px">host B</tspan><tspan
+ sodipodi:role="line"
+ x="137.47044"
+ y="13.13568"
+ style="stroke-width:0.378785px"
+ id="tspan895">pacserve</tspan></text>
+ </g>
+ <g
+ id="g2406"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round"
+ id="rect855"
+ width="31.75"
+ height="211.66667"
+ x="158.75"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="174.40276"
+ y="10.738557"
+ id="text885"><tspan
+ sodipodi:role="line"
+ id="tspan883"
+ x="174.40276"
+ y="10.738557"
+ style="stroke-width:0.378785px">mirror</tspan></text>
+ </g>
+ <g
+ id="g2614">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1263"
+ width="25.870832"
+ height="7.393333"
+ x="11.087502"
+ y="25.876667"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1267"
+ sodipodi:sides="3"
+ sodipodi:cx="53.653767"
+ sodipodi:cy="42.333336"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 63.500006,42.333336 c 0,1.705419 -13.292423,9.379802 -14.769359,8.527093 -1.476936,-0.852709 -1.476936,-16.201477 0,-17.054186 1.476936,-0.85271 14.769359,6.821674 14.769359,8.527093 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:5.29169px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="23.935312"
+ y="31.525799"
+ id="text1313"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1311"
+ x="23.935312"
+ y="31.525799"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">GET</tspan></text>
+ </g>
+ <g
+ id="g2608">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1285"
+ width="29.566669"
+ height="7.393333"
+ x="36.95834"
+ y="40.663338"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1287"
+ sodipodi:sides="3"
+ sodipodi:cx="95.987099"
+ sodipodi:cy="63.500008"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 105.83334,63.500008 c 0,1.705418 -13.292425,9.379802 -14.769361,8.527093 -1.476936,-0.85271 -1.476936,-16.201477 0,-17.054187 1.476936,-0.852709 14.769361,6.821675 14.769361,8.527094 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:5.29164px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="51.657192"
+ y="46.310802"
+ id="text1317"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ x="51.657192"
+ y="46.310802"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px"
+ id="tspan1319">HEAD</tspan></text>
+ </g>
+ <g
+ id="g2602">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1297"
+ width="55.437504"
+ height="7.393333"
+ x="36.958336"
+ y="55.450005"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1299"
+ sodipodi:sides="3"
+ sodipodi:cx="133.02876"
+ sodipodi:cy="84.666664"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 142.875,84.666664 c 0,1.705419 -13.29242,9.379803 -14.76936,8.527093 -1.47693,-0.852709 -1.47693,-16.201477 0,-17.054186 1.47694,-0.852709 14.76936,6.821674 14.76936,8.527093 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:5.29164px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="64.594063"
+ y="61.095802"
+ id="text1325"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ x="64.594063"
+ y="61.095802"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px"
+ id="tspan1323">HEAD</tspan></text>
+ </g>
+ <g
+ id="g2596">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1327"
+ width="29.566669"
+ height="7.393333"
+ x="-73.916672"
+ y="-77.630013"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1329"
+ sodipodi:sides="3"
+ sodipodi:cx="-62.762924"
+ sodipodi:cy="-105.83335"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0113777e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -52.916685,-105.83335 c 0,1.70542 -13.292423,9.379801 -14.769359,8.527092 -1.476936,-0.852709 -1.476936,-16.201482 0,-17.054182 1.476936,-0.85271 14.769359,6.82167 14.769359,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.40972px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="59.120243"
+ y="75.832832"
+ id="text1353"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1351"
+ x="59.120243"
+ y="75.832832"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">404</tspan></text>
+ </g>
+ <g
+ id="g2590">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1339"
+ width="55.437504"
+ height="7.393333"
+ x="-99.787514"
+ y="-92.416672"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1341"
+ sodipodi:sides="3"
+ sodipodi:cx="-62.762909"
+ sodipodi:cy="-127"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -52.91667,-127 c 0,1.70542 -13.292423,9.3798 -14.769358,8.52709 -1.476936,-0.85271 -1.476936,-16.20147 0,-17.05418 1.476935,-0.85271 14.769358,6.82167 14.769358,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.40972px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="72.057129"
+ y="90.617828"
+ id="text1435"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1433"
+ x="72.057129"
+ y="90.617828"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">404</tspan></text>
+ </g>
+ <g
+ id="g2584">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1359"
+ width="25.870832"
+ height="7.393333"
+ x="-44.349998"
+ y="-107.20333"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1361"
+ sodipodi:sides="3"
+ sodipodi:cx="-25.721235"
+ sodipodi:cy="-148.16666"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -15.874996,-148.16666 c 0,1.70542 -13.292423,9.37981 -14.769359,8.5271 -1.476936,-0.85271 -1.476936,-16.20148 0,-17.05419 1.476936,-0.85271 14.769359,6.82167 14.769359,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.40972px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="31.398363"
+ y="105.40282"
+ id="text1439"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1437"
+ x="31.398363"
+ y="105.40282"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">404</tspan></text>
+ </g>
+ <g
+ id="g2578">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1305"
+ width="107.17918"
+ height="7.393333"
+ x="11.087494"
+ y="114.59667"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1307"
+ sodipodi:sides="3"
+ sodipodi:cx="170.07042"
+ sodipodi:cy="169.33331"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 179.91666,169.33331 c 0,1.70542 -13.29242,9.37981 -14.76936,8.5271 -1.47694,-0.85271 -1.47694,-16.20148 0,-17.05419 1.47694,-0.85271 14.76936,6.82167 14.76936,8.52709 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:5.29169px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="64.594055"
+ y="120.2358"
+ id="text1453"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1451"
+ x="64.594055"
+ y="120.2358"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">GET</tspan></text>
+ </g>
+ <g
+ id="g2572">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1445"
+ width="107.17918"
+ height="7.393333"
+ x="-125.65834"
+ y="-136.77663"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1447"
+ sodipodi:sides="3"
+ sodipodi:cx="-25.721239"
+ sodipodi:cy="-190.49997"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -15.875,-190.49997 c 0,1.70542 -13.292423,9.3798 -14.769359,8.52709 -1.476935,-0.85271 -1.476935,-16.20147 0,-17.05418 1.476936,-0.85271 14.769359,6.82167 14.769359,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.40972px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="72.16436"
+ y="134.96431"
+ id="text1395"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1393"
+ x="72.16436"
+ y="134.96431"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">200</tspan></text>
+ </g>
+ </g>
+</svg>
diff --git a/FLOW/ok.svg b/FLOW/ok.svg
new file mode 100644
index 0000000..0f349f2
--- /dev/null
+++ b/FLOW/ok.svg
@@ -0,0 +1,588 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="134.04988mm"
+ height="148.86678mm"
+ viewBox="0 0 134.04988 148.86677"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
+ sodipodi:docname="ok.svg">
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path904" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lstart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path901" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0052508"
+ inkscape:cx="348.95745"
+ inkscape:cy="401.88998"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1047"
+ inkscape:window-x="0"
+ inkscape:window-y="33"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid847"
+ originx="0.49993972"
+ originy="0.50005597" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0.49993974,0.50005597)">
+ <g
+ id="g2437"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <g
+ id="g2422"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43162;stroke-linecap:round;stroke-linejoin:round"
+ id="rect849"
+ width="79.375"
+ height="211.66667"
+ x="0"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="39.465248"
+ y="10.555113"
+ id="text863"><tspan
+ sodipodi:role="line"
+ id="tspan861"
+ x="39.465248"
+ y="10.555113"
+ style="stroke-width:0.378785px">localhost</tspan></text>
+ </g>
+ <g
+ id="g2411"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.43162;stroke-linecap:round;stroke-linejoin:round"
+ id="rect857"
+ width="31.75"
+ height="190.5"
+ x="5.2916665"
+ y="15.875"
+ ry="0.70588279" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="21.141972"
+ y="24.962555"
+ id="text867"><tspan
+ sodipodi:role="line"
+ id="tspan865"
+ x="21.141972"
+ y="24.962555"
+ style="stroke-width:0.378785px">pacman</tspan></text>
+ </g>
+ <g
+ id="g2417"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.43162;stroke-linecap:round;stroke-linejoin:round"
+ id="rect859"
+ width="31.750002"
+ height="190.5"
+ x="42.333332"
+ y="15.875"
+ ry="0.70588279" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="57.98608"
+ y="25.890362"
+ id="text871"><tspan
+ sodipodi:role="line"
+ id="tspan869"
+ x="57.98608"
+ y="25.890362"
+ style="stroke-width:0.378785px">pacredir</tspan><tspan
+ sodipodi:role="line"
+ x="57.98608"
+ y="32.50494"
+ style="stroke-width:0.378785px"
+ id="tspan873" /></text>
+ </g>
+ </g>
+ <g
+ id="g2443"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round"
+ id="rect851"
+ width="31.75"
+ height="211.66667"
+ x="84.666664"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="100.42877"
+ y="6.5211"
+ id="text877"><tspan
+ sodipodi:role="line"
+ id="tspan875"
+ x="100.42877"
+ y="6.5211"
+ style="stroke-width:0.378785px">host A</tspan><tspan
+ sodipodi:role="line"
+ x="100.42877"
+ y="13.13568"
+ style="stroke-width:0.378785px"
+ id="tspan889">pacserve</tspan></text>
+ </g>
+ <g
+ id="g2449"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round"
+ id="rect853"
+ width="31.75"
+ height="211.66667"
+ x="121.70834"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="137.47044"
+ y="6.5211"
+ id="text881"><tspan
+ sodipodi:role="line"
+ id="tspan879"
+ x="137.47044"
+ y="6.5211"
+ style="stroke-width:0.378785px">host B</tspan><tspan
+ sodipodi:role="line"
+ x="137.47044"
+ y="13.13568"
+ style="stroke-width:0.378785px"
+ id="tspan895">pacserve</tspan></text>
+ </g>
+ <g
+ id="g2454"
+ transform="scale(0.6984252,0.69858268)"
+ style="stroke-width:1.43163">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round"
+ id="rect855"
+ width="31.75"
+ height="211.66667"
+ x="158.75"
+ y="0"
+ ry="0.71428609" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:6.61458px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.378785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="174.40276"
+ y="10.738557"
+ id="text885"><tspan
+ sodipodi:role="line"
+ id="tspan883"
+ x="174.40276"
+ y="10.738557"
+ style="stroke-width:0.378785px">mirror</tspan></text>
+ </g>
+ <g
+ id="g2534">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1263"
+ width="25.870832"
+ height="7.393333"
+ x="11.087502"
+ y="25.876667"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1267"
+ sodipodi:sides="3"
+ sodipodi:cx="53.653767"
+ sodipodi:cy="42.333336"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 63.500006,42.333336 c 0,1.705419 -13.292423,9.379802 -14.769359,8.527093 -1.476936,-0.852709 -1.476936,-16.201477 0,-17.054186 1.476936,-0.85271 14.769359,6.821674 14.769359,8.527093 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:5.5444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="23.935312"
+ y="31.525799"
+ id="text1313"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1311"
+ x="23.935312"
+ y="31.525799"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">GET</tspan></text>
+ </g>
+ <g
+ id="g2528">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1285"
+ width="29.566669"
+ height="7.393333"
+ x="36.95834"
+ y="40.663338"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1287"
+ sodipodi:sides="3"
+ sodipodi:cx="95.987099"
+ sodipodi:cy="63.500008"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 105.83334,63.500008 c 0,1.705418 -13.292425,9.379802 -14.769361,8.527093 -1.476936,-0.85271 -1.476936,-16.201477 0,-17.054187 1.476936,-0.852709 14.769361,6.821675 14.769361,8.527094 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.62031px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="51.657192"
+ y="46.310802"
+ id="text1317"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ x="51.657192"
+ y="46.310802"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px"
+ id="tspan1319">HEAD</tspan></text>
+ </g>
+ <g
+ id="g2522">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1297"
+ width="55.437504"
+ height="7.393333"
+ x="36.958336"
+ y="55.450005"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1299"
+ sodipodi:sides="3"
+ sodipodi:cx="133.02876"
+ sodipodi:cy="84.666664"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 142.875,84.666664 c 0,1.705419 -13.29242,9.379803 -14.76936,8.527093 -1.47693,-0.852709 -1.47693,-16.201477 0,-17.054186 1.47694,-0.852709 14.76936,6.821674 14.76936,8.527093 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.62031px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="64.594063"
+ y="61.095802"
+ id="text1325"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ x="64.594063"
+ y="61.095802"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px"
+ id="tspan1323">HEAD</tspan></text>
+ </g>
+ <g
+ id="g2516">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1327"
+ width="29.566669"
+ height="7.393333"
+ x="-73.916672"
+ y="-77.630013"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1329"
+ sodipodi:sides="3"
+ sodipodi:cx="-62.762924"
+ sodipodi:cy="-105.83335"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0113777e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -52.916685,-105.83335 c 0,1.70542 -13.292423,9.379801 -14.769359,8.527092 -1.476936,-0.852709 -1.476936,-16.201482 0,-17.054182 1.476936,-0.85271 14.769359,6.82167 14.769359,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.62031px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="59.120243"
+ y="75.832832"
+ id="text1353"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1351"
+ x="59.120243"
+ y="75.832832"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">404</tspan></text>
+ </g>
+ <g
+ id="g2510">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1339"
+ width="55.437504"
+ height="7.393333"
+ x="-99.787514"
+ y="-92.416672"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1341"
+ sodipodi:sides="3"
+ sodipodi:cx="-62.762909"
+ sodipodi:cy="-127"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -52.91667,-127 c 0,1.70542 -13.292423,9.3798 -14.769358,8.52709 -1.476936,-0.85271 -1.476936,-16.20147 0,-17.05418 1.476935,-0.85271 14.769358,6.82167 14.769358,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.62031px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="72.164368"
+ y="90.60936"
+ id="text1357"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1355"
+ x="72.164368"
+ y="90.60936"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">200</tspan></text>
+ </g>
+ <g
+ id="g2504">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1359"
+ width="25.870832"
+ height="7.393333"
+ x="-44.349998"
+ y="-107.20333"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1361"
+ sodipodi:sides="3"
+ sodipodi:cx="-25.721235"
+ sodipodi:cy="-148.16666"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -15.874996,-148.16666 c 0,1.70542 -13.292423,9.37981 -14.769359,8.5271 -1.476936,-0.85271 -1.476936,-16.20148 0,-17.05419 1.476936,-0.85271 14.769359,6.82167 14.769359,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:5.54437px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="31.480207"
+ y="105.39436"
+ id="text1379"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1377"
+ x="31.480207"
+ y="105.39436"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px">307</tspan></text>
+ </g>
+ <g
+ id="g2498">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1293"
+ width="81.308334"
+ height="7.393333"
+ x="11.087494"
+ y="114.59667"
+ ry="0.69858313" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1295"
+ sodipodi:sides="3"
+ sodipodi:cx="133.02876"
+ sodipodi:cy="169.33336"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ d="m 142.875,169.33336 c 0,1.70542 -13.29242,9.3798 -14.76936,8.52709 -1.47693,-0.85271 -1.47693,-16.20148 0,-17.05418 1.47694,-0.85271 14.76936,6.82167 14.76936,8.52709 z"
+ transform="scale(0.6984252,0.69858268)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:5.54437px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="51.657181"
+ y="120.2358"
+ id="text1383"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1381"
+ x="51.657181"
+ y="120.2358"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px">GET</tspan></text>
+ </g>
+ <g
+ id="g2492">
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:0.999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1385"
+ width="81.308334"
+ height="7.393333"
+ x="-99.787498"
+ y="-136.77666"
+ ry="0.69858313"
+ transform="scale(-1)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.43163;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1387"
+ sodipodi:sides="3"
+ sodipodi:cx="-25.721239"
+ sodipodi:cy="-190.49997"
+ sodipodi:r1="9.8462391"
+ sodipodi:r2="4.92312"
+ sodipodi:arg1="0"
+ sodipodi:arg2="1.0471976"
+ inkscape:flatsided="true"
+ inkscape:rounded="0.1"
+ inkscape:randomized="0"
+ inkscape:transform-center-x="-1.9077104"
+ inkscape:transform-center-y="4.0771403e-06"
+ transform="scale(-0.6984252,-0.69858268)"
+ d="m -15.875,-190.49997 c 0,1.70542 -13.292423,9.3798 -14.769359,8.52709 -1.476935,-0.85271 -1.476935,-16.20147 0,-17.05418 1.476936,-0.85271 14.769359,6.82167 14.769359,8.52709 z" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;line-height:4.62031px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="59.227482"
+ y="134.96434"
+ id="text1395"
+ transform="scale(0.99988731,1.0001127)"><tspan
+ sodipodi:role="line"
+ id="tspan1393"
+ x="59.227482"
+ y="134.96434"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">200</tspan></text>
+ </g>
+ </g>
+</svg>
diff --git a/Makefile b/Makefile
index f4e28b5..ae09b42 100644
--- a/Makefile
+++ b/Makefile
@@ -69,6 +69,8 @@ install-bin: pacredir avahi/pacserve.service
install-doc: $(HTML)
$(INSTALL) -d -m0755 $(DESTDIR)$(PREFIX)/share/doc/pacredir/
$(INSTALL) -D -m0644 $(MARKDOWN) $(HTML) -t $(DESTDIR)$(PREFIX)/share/doc/pacredir/
+ $(INSTALL) -d -m0755 $(DESTDIR)$(PREFIX)/share/doc/pacredir/FLOW/
+ $(INSTALL) -D -m0644 $(wildcard FLOW/*) -t $(DESTDIR)$(PREFIX)/share/doc/pacredir/FLOW/
clean:
$(RM) -f *.o *~ pacredir avahi/pacserve.service $(HTML) version.h
diff --git a/README.md b/README.md
index 3907feb..4bcc937 100644
--- a/README.md
+++ b/README.md
@@ -66,6 +66,9 @@ Please note that `pacredir` redirects to the most recent file found on
the local network. To make sure you really do have the latest files run
`pacman -Syu` *twice*.
+To get a better idea what happens in the background have a look at
+[the request flow chart](FLOW.md).
+
Security
--------