Mailing List Archive

Something to think about in the plane
At this point it looks like the most nasty stuff is actually
interpretatio and generation of http headers.

Here are some questions you guys can think about in the plane
on the way down here:

* Which "Host:" do we put in the request to the backend ?

The one we got from the client ?

The ip/dns-name of the backend ?

Configurable in VCL backend declaration ?

(test with www.ing.dk)

* Construction of headers for queries to backend ?

How much do we take from client headers, how much do we make up ?

Some sites discriminate contents based on User-Agent header.
(test with www.krak.dk/www.rs-components.dk)

Cookies

* Mapping of headers from backend reply to the reply to client

Which fields come from the backend ?

Which fields are made up on the spot ? (expiry time ?)

(Static header fields can be prepended to contents in storage)


* 3xx replies from the backend

Does varnish follow a redirection or do we pass it to the client ?

Do we cache 3xx replies ?


And here is a new version of the VCL flow-chart. There are now two
versions of it a "user" version and a "real" version. The "real" version
goes into deeper detail about object handling, something the user will
not need to know about normally.

begin 664 vcl_flow.pdf
M)5!$1BTQ+C(*)<?LCZ(*-B`P(&]B:@H\/"],96YG=&@@-R`P(%(O1FEL=&5R
M("]&;&%T941E8V]D93X^"G-T<F5A;0IXG)U9RVY<QQ'=SU>TM;&\4*>KWPW#
M"QM6(@,*$,DTLC$04,-+D_:0E/C*(LZ_YU3=?MP[5A+<D2"17=//ZE.G3O5\
M4D:3,ORW_MS?[#[M_O3>JU\>=N_P*]MN\'\JUJC#S@>W_IU_N=K]7=WNHHXY
MJG_N2/T5_ZYWSE#1):L48M0^8A:;;-`PQ.)TP#A++FGOAH&R=]J&/F31Q;O"
M/P]]DFZXVOVX^Z1(#M%^[&_4=V<X1E%%NVB\.KO<S><C98W1`3,&IYUQZNQF
M]_+]M)^NGR?UYNSL;^I^^O0T/3Q^=?;K[O69>K<C$Y..2<50C'88GVS2N:B0
M,^;.Z/\_-D#TF1T0D?8^J62B#H9D"Y=/MWOUO#_\XW[:/ZM_\>ID="PIJK.W
MNY=*J>M+]?-+;$[CG_KB&_7B+Z_/7JC??U=+VYO7WW[_XN>O,,&7, at A_/IX_
M/'Q=F__FG_R?G,QZ1SI:]J75R?,--8M+1=NH1INL]J-I?=#!JSU.CE_9#]VV
MF(12!B;XSCQ.'$:?P^[RQ'%\V3;%H(M5D:S5M at BPF@5WDH*RD:*V7D7KK8YC
MWZV]WUGKHRYE]#`E:;>8H;?G-3"B64P`_JSJ,QA#NBS6J&V,:+MH/=HNVPQ'
MY]AO!3)E;1)AOJPS0H]A]/;N[K>GC^JG]V\[?OO&*GZ'HZ,O4:>Q<X>FIT7;
M%(3E\I*K:3%%]=^XJ]IE><5;1FV.9LP4X+SHL!1_Q+%T?7O]<#4".$2`%_ZW
MN$&&2S=X7`S&DJ>@$Z,]!]`@6>?E?N;F'H$(KD#$5T,Q25N3^_#>GN??[[J!
MBL>A^G"2B![SUS86:!MH/=H&ZP3K`VS%"8'P"N,/SD\EB(M^>'AXFOE.F`94
M6$!(KSKE7.Q>3O?W=_?#B3X#I`L0$3:M+8,H@,6*RAX?^(R[S84WV]L=W<>6
MUG8V&H[W9_1(VCCLM"`A(')*\MK@$YN02HA/DDGC<#;@ML/L";B,<"DV@")L
MEHV1UYYA#1KQEM.*B>P!]$'JL%:P>=*PK>#,3D?GE(].DYMY?NU5EUR`ZP<T
MNZ%BRX7H%]!T+GC>;H>F(V3,3,V`:;#4@&9O-^1TPXRL/KP"K\_?H=DWT'JT
M#=8)U@?8"DW'D<)Y9@'--^>W%X=IF8:1K\GSQRM\GC](:GN\NK][^F5$.XX$
M$"V1ZG at 5QIV/$"11.8_X"\QOP&%.H]V1>FQI[8'4;JDBQWFLD8">%"QG*N<R
MVHPO4&"<2;3WJ3;>&>/9X;H*GQ\(<X[%1NQ]&*JGC=N*59P(Y!]78&7_#@9(
M#NDL*9\Y^+(B5P01!<QMX=83=%!BSDXJ8$EOCW308<YD_U4)?7'WX5=]>?=T
M>[&6.Y?3X_YJI7=6(_;G^ZOS#X=IJT9J27PDL5`\B"+T=`D]F.?8;&T02G*K
M_-ELBUD2X`H0CE38^BPSZ+9Q(I(J:7EK757?S<)08:)SH+Y(ROOLV6[),MOV
M-M)2,0#SZ$$)X5#Z!*U95T#_:C`0CW!,&PY98246Z@*M#3:J6^@]VA;K#,>'
MV*R0L`$#@'E;=*I"^\^,#P;5*ZBS%)&I5JPB)<#5='XQW0OT"0 at E<Y0:+^_O
M;M2'\_UOT^W%T%DS!;;P@,.1MC0%Y9/WNB16C)[U%2*,&9DD8'T(".4\H\2B
MV$DX;D!')\*6,.?BC@[#$D)B7A:4G#1NL]+"7:2\SF:7S9DS0Q1P",AON*`5
M=#XQ:H$8J+7"'`/(PDR1[QU3>E!)%T(0`)YP8Y"TY"`R,O"`9@#BD.8T at 8]9
M\CIF5:)(''0.DH!S-6$)YC^;;=2&M1;"EO/3 at H=!ZC2CJ_$I>F4MBJ[Q*1$8
M%JE[R<.GC=OJ9CYY`C`<#I)3_(QHL!G%&%_W0%KF`@Y^2B5SG-B,+,17E9@^
MH)=RLJQ`?4+)8)F2()6C>-X!.N3@/^>8WAR+10#&(8UJ2NO\Y9#SK%OE(93"
MP2_SD(4L(,E[Q#<M^>ND<9OS%P<H9]Z%WU;Y"ZFY\#8HX-**E"/-$H/`$MG=
M"<P2A`(KP9E8:Y.+1B1[+-$^-U%T?1_>VG4!KAFKQ4%$L0)O$U0<]Q5JFVO&
MNH76HVVQS7!TB,V,",<3F!PW`>>+D[Z?#M?/D\#K%?C)(II69'=QMW^ZF6Y%
MB;UB69ZAKOY(ATBNTWZ\FMC()7M:@K2*>!]QQ8ZE$K\Q`)3>&89B;W>R/[:T
M=F7:Y]ZA918;2^&?5"!5LKP#9*ZT*'%E6TM9KA1S9O'A4#Y+8LRB89O``5D&
MQ!$4%V7#7#>3[$GC-I-L2B*F6)HF&SY;SCHF/_BOH&PS4JY*R,;"U.E/T6'8
M/V46QLBZL:QUF%#\_Y%AS^>'ZR,9)I3U!QEV^S#=/WZ]%E at F&09*TP#PJT&*
M`@7E%)@<K,'Y/!-BE,L$HZ.-'("/+<UWVKI$=`DLDZ at 4+B5[ICBPA<O-/D[N
M]*1Q?*<44Y1Z:[X#?E-`?>PY8`$*)/M:+[<P("[(6`,$),(R[YJ`:U'Q@=KJ
M#MDLQV4-RDJ_C#I5\M!)XS;G(5P"L?OE>OSG\I!G75,63K`1O"(LA7S#:2A'
M>45$':4)+C0QRHU6VI>D8M`G<TEO4,"R3G6$U,UTZL$3D</*<2'.-2[T5!7&
M)PW;'HSP'3MQX8*C8&P>[P5\-W at _7X!#<HA#@#0=-A*K-?*$U2U4J'IIGJ&W
M6XG=#53?E=H$AG.Y'TO4-NOLNHG6HVVRS;`^Q7:9#6+G9QF9??;3#Q+JDC/`
M[IE".4H:(U\@ZQA`XBCM7-\JKM6FX6H#4DW+F(.\=U(85_D#XN"G at IXD&[78
MB)B,67S-_,J(C+!PCRRRIY$[3F+$7A.'D$M]^;`1`CC(NLW2Q<I8:4:ZD,M)
MX[9_F\'?NZ051J^[[V?'%21>+)MQV9"-'*;SZ4O&U<BSNN5H!WL-"XHW+LK;
MH-$EV?F+GD.?9EBV;SYH#_T,JH3"KU_%R+./VM_=?#Q,C]/%(N]QO2UO4XGS
MWPV_26:15W6OK;R@``UMY)L>00S4`?$-+`09^%O(HGZ]1*;X.0",EQ=APY*U
M?L&!NHU3`1`N8<6%'==0&=Y*_-(IQ97AEWPRK)IS+<I.&,8.=)8OP?<7-Z:V
M+"*=,OJ;T!^=*-",XHRV7QZSJ<1VS%@LNZP?,SI.3JM3MD15]\+R!J0`[XWM
M5I"V$\VJZ(1A\CXQI"_5Z&B65D+U=GN8K6T3X-CZK,*O_LTRIAAK.V2:T#K,
M+RH;A\AF<4S9 at N'G4AEFL[S_ at 6JCY'445/(H5J%H'6X_XM`9VBK,+Q<6ZDRG
M;L(D#GMA!3?7$[QVG25S^5MQ=,(HWO,[_/T/4L,7(V5N9'-T<F5A;0IE;F1O
M8FH*-R`P(&]B:@HR-#@S"F5N9&]B:@HQ-2`P(&]B:@H\/"],96YG=&@@,38@
M,"!2+T9I;'1E<B`O1FQA=&5$96-O9&4^/@IS=')E86T*>)RM6MN.'+<1?9^O
MZ/@E\H,ZS3L)(P\.[,0!'"!V-O"+ at 6`U&GG7GMF5]R(AB//O.:?(8G>/;<$]
MB(3=V>*PR&+QL&[DC\,TFF'B__:Y/^U^W'V%'Q(G_$[%3L-QYR>S_IM_W.R^
M&>YV?@PY#N]W9O@;?FYWUDQE#'%(<<JC21C%E"F-*:&EA-$9<)HP^=&:98N;
M[.AMYUKT"=:,DV>+CM-;;G;_V/TXB#B3?NQ/PY^N=G_XN at P1`Z+;U9M=79P9
MC#>C"QPAC\'BJ]/NQ=>'_>'VW6'XXNKJ[\/#X<?GP^/3QU??[SZ_&K[:I32-
MWL<A%I?':`>3$Z8N at Y\<UIC1_P,2&/,+(N1IM,'G(5E^9T6$-\]W^^'=_OBO
MA\/^W?`?SIY&YU(<KK[<O1B&X?;-\.T+R#;B9_C='X>/_O+YU4?#3S\-R[8O
M/O_TLX^^_1C\OQ<F_'M[_?CX22/_RT_^DH69-(6Q%&C"0([`7=(6G\J(J6?:
MN;',I,N9RM]CX299#SE[VV(0Y^UH,C<M%CO:N<]Q]^9"/FZV*2Z,%EL;31JC
M8$L;HAL-Q,S.CM$-,4W`M.]B*[T'KK`^%^8>/L4Q+D;HM$P!!FT(R8X30*0#
M!$P]A7F*1H-#A=`>*J2.L%[%?BN*@QM=YG!E]#$)A+Z\O__A^>WPSZ^_[-CM
M<C7LSEJ..?G1FUGRC$^BNRO+Q]4&2\."OZENWB7IL-S:W\JQ^03C0)K(W2MC
M!&[E^-S>W3[>S.MV,5+[!M@>LT!;6[*U-"#&@IYXFGD:`77:A6(ZC1V<L#-Y
M;BD at 3<E]A$ZW.?:[W@)EC at 5SZ0C1.IB0>8Y&8PZ50GNHE#K"V3JVPJ1D'&/A
MC[!51E3UU\?'YVKJJ*Z"HY9"&%ZJM7F]>W%X>+A_F'4Y374[.X9R!J0++&*.
MTXB-R+#;M&<Q!3$;G59LGS4H:2U..N9^USNHX\@96YNAEY+-:,)0('\VV*5<
M//5%/11(43*TW5S"B9+FL7!/H^CYN"LXSU/@GF4_YFIY+N/;"E+LGW<I#QY*
M\[9J?JU79WD"NQ).O<$98"$-#D9F=`DT\`YMN\FX3NQW-L=,:&B+)41BYU:R
MC8[^K<'`>Y%-V0%*GLHZ>B/VNSZY?MUD:]QGLF^%I<6N%O!9"YOCJG*^N+Y[.
M?3PLO>\$"^N,76/S^E$\VM/-P_WS=_.!M_#$,`H+D-H,*U020(IU`UIN\A,<
M?C4ZG5"$GC4H:5-V8P)`>P,-;N9H#F$$-!#@PX7&)T2$0 at S-*C72>5H;=GB"
MZ3"RI8%Z.^ZJVEL'HO,"IJW0Q!0X0VGP1`!\"+5/G<XGWN-D at -,66(TL!R3X
M$6".!N"J)KQV"<7BQ)-..#HXF'./S58="HS at C,9VJ;ZYOGT:WM_<'@^4[26!
M7;);X>'^U?>'_=-P^SB\>G[\][R$"--D9O>+-4231T2IT>.\X$B;@#,.$Q,=
MW(C!X0^&+K6O6GQ?L(FKB3:G46(47R:&2M$&!*VBAU*(MX@](?[$_UW`M5E;
MD:<#TKHR6N!/?.#]\]WK^428B+"\]!TYS2T61A8KQ0<<F5,Y+>W\E)6$<RHF
MP(AI@\D>`6_J[)UN$S#F:2T3`DILH0X0>"ASZC,H#:/41.@]5,0VPODB-H=)
M!7:\$+A1U"7^[^[Q\"`&QHS6!WB;)9X412\-`(_9?P%LB^BJ>N4%R!(F!)@Z
MR%0CCG;$=/^%C0]CJH93_1`,X40_RX`6XA;B!:OW<KQ:#*+@%)A=Q+<9:-G"
MNY05T.[NGX8UV(R/EO$*SI#A?A:$ISD32PYA<[P at 1\(1&<.$$2,6Z=,Z1SK6
M2/?7LJ3?89]&$7"="KTY/.UO5KG0BF-_O;^Y?G4\_.;\J5F,4!`D)-F``#N)
M@*B911Q2AC%#8)PD<1_V)=D!R8,E2F3W8\K<JY!A"I`/G'IT'!"6\?0P7@[B
MXD/B9K3\Z2*^FC\A`$J^GSGBID99(9?$TV:*A(N@@^PF:/CKW.?:+T>9YR_8
M*E>6\Q?DV,AOM4]%[25\E-NB(W,P'*U"PWV:6S+B-_C>"6+"S'H@;T1.I,=!
MZ3V]E%WU@/$?K?(KU<9']]8`Z\/TLW,'-S&RZ.,WFN:L2=!:NH!MA/,E;#9G
MR!UA19B,TH'S3+`F\/9XO3\,LW&"]V&<LC)=[V^?;H:[P_OF2(NU9XZ4AJ^-
M\>W'"R\"VX]PQ)M)3,II;K&3&Q&<V2E*>N`QX. at 8LL.!N]AIT?K$#>X]FEK;
M`$JV&6:U3\Q(676H[*XP6C1]`J6I]BJ"MG01VPCGB]BL=IQO`UODZ<Y*#5?_
M3%M2'06VO.2N;2O:E$K2S>'Z]>'AL<:RN5B/Q2]5_N;A_C2\NM[_<%B:THXJ
M!$0N+\RZ]U%BS*YAA^-:<=AHY^@0ZO$$`E-ODD%T6U+-<>"+B'KM4 at _G=JZ;
M>3:U_J?>,.%H!QH0K`4&+TQ3PTBE?7&E&T+^#9>A;1P$$2ZX?893M5$,0Q.G
M]6DR7\"WV0T6Y#V%LR!3#,T=*036+I#.MRK!0D>13M$3-RP'(!C`$,SI?2=G
M<[-N:.2<)&N#<;8.YRO:I<K`\9+$'JI<4>J4)3UI^W&:&UI@<&1L7Z@;U9KH
M]!*VS2J=R(A3RW*?";^0(5O/*!"PL4',*8Q/1&B-1$21AB1/Z at 6^!$OY.MV5
M>MZB=,_L>@.=96)NBB5.^*1W9YY%H\+0U!MQKU2K)8[B,DFSQ4NE6K/Q(UH,
MUX4^"--B$+U>QK=5L9;>'EFU2\`%,IZ?Y7>6<0BR8'@)\?NGN<5A5P%B)"J)
M`8SW$X65^IT04"A$IE.NWS7+VOF4;B/ON[LP!L>#!05EGR`E/OOHC09'FUL[
MJ&@ZP)GPFVL/.#TE462RUSSSL\/Q]MWAH?G&R;DY[J_F_/7]_OETN!/O^A)B
M`3WQYZ;\+#W0'9S-HE8+`H\L$B'+G!38S$DB>"5G\*X;&JEIQSO]'G%>&`.+
M$3BE<*@!2)Z at J0`#`<3",LD6"'(#0BO9S&JM9IF,QZ=ED&@#Y/6I5\$%N1?Q
M;48NMM0CL'$37-^O5'9;+NWL)-:/"5;&])P39^F23",PJ/*#BQRXK#,-L?$?
M3C3>71]OSQ(-,6,_2S0D[_QDG4+,L0P"1+?PN(ZU2+^(=I at S1+N@+0N+2V>O
M38M!(LY0B+/;UBX+9[^)2^+P"7;%=PMZFALR^#R]!C4)N)8HGLL at CV9ZK#0C
M/)81R]RCY4U]!*7K%/N>6-F(4(R56AT@(J++BRD:S>)%$Z*U="';"&>KV!Z)
M0W>T3N#VS7E]>CS>[Z^?#K6T$*=@5B;B\>G^X?J[6LE",.5 at YM8FY/YA6-J9
M"I"<`C,5A3MV*4<><L>[!.(CLU`++SJEBH_LI1#J6--NA4BM:VO;J5=J=`.X
MU8X57>TB`+F$;7M]`>;?K8_\;:_0-#N*(V\7>&MT)B;H3+'W%L94':>#1S&=
MI,?B[:6=.R`OG[F%4!`T"OT2KR<:'\TK][H-W,C]KL^L'530QK^2>[.?L at A>
M'0%:1I:LJ9CG.RU/T4[F8#]4G4)6Q'EGY%@#;P$_Y%A,D^):RKS$=/1&,'P6
MH:;$(BU*$7^!P$0RV0)8,1FQEC4!*G-J-05KC5AD2WOB6Z!S"=MF;V&P at PB$
M/^@M<"K,#!VEV^8;!_MF2D>&P2F2V*]CQUCD?-G-/=H57A]!Z6ZI>D,%01^@
M8:1/T5'4A=`>*G,;8+6$S7;*5H]Z,8JTJK0P0+!L$,CQJL[1?>+H)^X"<KO,
M:,.%:OUKW"P&R'LIXZH6N1',!"7:+NVRGS%QC,1#Z(\$+N*[I)8>BUOAZ"P1
M2<DSR<E&0,QX>9(\B/X12!`X5X`O6IJ':4QS%UZ/\[W,L0\SMVP_`YF!9&(E
MK[2W+'*!-NSO3V^/AZ?#HK)@LY3?3?21D33KE;;ZWX8Q6G&6Q7CIQ]N]&.B-
M>4!+B,T>)''$3%M2O57 at JQV3AC+)#;8L,W*+]#:\VH,+V&[D#JVB2B^&F3$E
MZ:=7LVI1#/,S6`/+YP9)TN'$?(Y1-!)C2;@MKY8&32+U4KF%S<1/\!HF%W&[
M#,M2%GF#+[S+G^7E0P[,HTNJ4?(%;!)3]2RH"GU:M+C(JJC2!3XE at +_3&+\E
MI3PLSK>6>81YZI;!U at XB[U86D=5EJ6+/%]>]Q?%ME2-PDBBZI;G66"G[S)>C
MIB3647J+AAHZ0J?[!7-O at 7V1]QLZ0O5R?8I*TNDW&=KW*F)C/U_$9N\\01K&
M!I:*6;PA:QFBL^O@;Y5`PDX!'>4WU0(E(D=>)-=&IU[MLKR]#*F7YFW`EHDZ
MZA6;]0'?U_!/"T1HRWRXQHC=5B?4MI<5,N!*MJ at B0M!Q$9_4`V.D6F:$:(-N
M;T#.1:^DVU]ODQ?XL%S>?,D-@\0CVOD;.:.C-2 at XE+UNO@ZOV.C3MZ^;<,J\
M%GZSQX6US%-<(..SV\?]]</KAHR8F#?\'[#A$'P:`AP&I5[C6-YJ\![$RCM*
M0XL:6**K%RQ:C]1ZLGAFZ^MW\V,8QF5IT,3CR(;""58%PDO8JJ$#?E-8/,SJ
M+>U9%6)>"9BTU*BN8WZ8!9\G3UQZC^8;^@A*]T=3O:4]J^HCM&=7?8[^,*M+
MH3U42AWA;!V;[8=AS&=6#[.V1?<M>&\8ELNPFMWHJ67`EN-L(;@?<5T>E at S'
M+>J\O:'7>>=AYMV_B*VZ#A/D65O3*EV'Y%0FY/;&Q==W<"PEB4<)O`HR/LMH
M(G.KE&HAZ+1H\7R2W,?PV3`[$XFW,]TL7*J-171(?QXD--*J`ERX>"6R3<Q)
MD0X;&JHLST]$8";--)&N2-K%ITE\'4!S&"1G/_;'2I;O_5R]C+F,3\RO@^TI
MOF<4?/W(BP]F'37 at -!R!16TMV;5WAI:E0MN"=JZ!ST1:&T?!X<Z+ET=]&%8%
M8WN6<`D;I?X*__\''^9_UF5N9'-T<F5A;0IE;F1O8FH*,38@,"!O8FH*,S8W
M,PIE;F1O8FH*-2`P(&]B:@H\/"]4>7!E+U!A9V4O365D:6%";W@@6S`@,"`V
M,3(@-SDR70HO4F]T871E(#`O4&%R96YT(#,@,"!2"B]297-O=7)C97,\/"]0
M<F]C4V5T6R]01$8 at +U1E>'1="B]%>'1'4W1A=&4@,3(@,"!2"B]&;VYT(#$S
M(#`@4 at H^/@HO0V]N=&5N=', at -B`P(%(*/CX*96YD;V)J"C$T(#`@;V)J"CP\
M+U1Y<&4O4&%G92]-961I84)O>"!;,"`P(#8Q,B`W.3)="B]2;W1A=&4@,"]0
M87)E;G0@,R`P(%(*+U)E<V]U<F-E<SP\+U!R;V-3971;+U!$1B`O5&5X=%T*
M+T9O;G0@,3<@,"!2"CX^"B]#;VYT96YT<R`Q-2`P(%(*/CX*96YD;V)J"C,@
M,"!O8FH*/#P at +U1Y<&4 at +U!A9V5S("]+:61S(%L*-2`P(%(*,30@,"!2"ET@
M+T-O=6YT(#(*/CX*96YD;V)J"C$@,"!O8FH*/#PO5'EP92`O0V%T86QO9R`O
M4&%G97,@,R`P(%(*/CX*96YD;V)J"C0@,"!O8FH*/#PO5'EP92]%>'1'4W1A
M=&4O3F%M92]2-"]44B])9&5N=&ET>3X^"F5N9&]B:@HQ,B`P(&]B:@H\/"]2
M-`HT(#`@4CX^"F5N9&]B:@HQ,R`P(&]B:@H\/"]2.0HY(#`@4B]2,3$*,3$@
M,"!2/CX*96YD;V)J"C$W(#`@;V)J"CP\+U(Y"CD@,"!2+U(Q,0HQ,2`P(%(^
M/@IE;F1O8FH*.2`P(&]B:@H\/"]3=6)T>7!E+U1Y<&4Q+T)A<V5&;VYT+U1I
M;65S+5)O;6%N+U1Y<&4O1F]N="].86UE+U(Y/CX*96YD;V)J"C@@,"!O8FH*
M/#PO5'EP92]&;VYT1&5S8W)I<'1O<B]&;VYT3F%M92]4:6UE<RU2;VUA;CX^
M"F5N9&]B:@HQ,2`P(&]B:@H\/"]3=6)T>7!E+U1Y<&4Q+T)A<V5&;VYT+T-O
M=7)I97(O5'EP92]&;VYT+TYA;64O4C$Q/CX*96YD;V)J"C$P(#`@;V)J"CP\
M+U1Y<&4O1F]N=$1E<V-R:7!T;W(O1F]N=$YA;64O0V]U<FEE<CX^"F5N9&]B
M:@HR(#`@;V)J"CP\+U!R;V1U8V5R*$=.52!':&]S='-C<FEP="`W+C`W*3X^
M96YD;V)J"GAR968*,"`Q.`HP,#`P,#`P,#`P(#8U-3,U(&8@"C`P,#`P,#8W
M,C0@,#`P,#`@;B`*,#`P,#`P-S(P,B`P,#`P,"!N(`HP,#`P,#`V-C4X(#`P
M,#`P(&X@"C`P,#`P,#8W-S(@,#`P,#`@;B`*,#`P,#`P-C,U-"`P,#`P,"!N
M(`HP,#`P,#`P,#$U(#`P,#`P(&X@"C`P,#`P,#(U-C@@,#`P,#`@;B`*,#`P
M,#`P-S`Q,B`P,#`P,"!N(`HP,#`P,#`V.3,Y(#`P,#`P(&X@"C`P,#`P,#<Q
M-#0@,#`P,#`@;B`*,#`P,#`P-S`W,R`P,#`P,"!N(`HP,#`P,#`V.#(W(#`P
M,#`P(&X@"C`P,#`P,#8X-3<@,#`P,#`@;B`*,#`P,#`P-C4Q-"`P,#`P,"!N
M(`HP,#`P,#`R-3 at X(#`P,#`P(&X@"C`P,#`P,#8S,S,@,#`P,#`@;B`*,#`P
M,#`P-C at Y."`P,#`P,"!N(`IT<F%I;&5R"CP\("]3:7IE(#$X("]2;V]T(#$@
H,"!2("]);F9O(#(@,"!2"CX^"G-T87)T>')E9 at HW,C4R"B4E14]&"@``
`
end

--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Something to think about in the plane [ In reply to ]
At this point it looks like the most nasty stuff is actually
interpretatio and generation of http headers.

Here are some questions you guys can think about in the plane
on the way down here:

* Which "Host:" do we put in the request to the backend ?

The one we got from the client ?

The ip/dns-name of the backend ?

Configurable in VCL backend declaration ?

(test with www.ing.dk)

* Construction of headers for queries to backend ?

How much do we take from client headers, how much do we make up ?

Some sites discriminate contents based on User-Agent header.
(test with www.krak.dk/www.rs-components.dk)

Cookies

* Mapping of headers from backend reply to the reply to client

Which fields come from the backend ?

Which fields are made up on the spot ? (expiry time ?)

(Static header fields can be prepended to contents in storage)


* 3xx replies from the backend

Does varnish follow a redirection or do we pass it to the client ?

Do we cache 3xx replies ?


And here is a new version of the VCL flow-chart. There are now two
versions of it a "user" version and a "real" version. The "real" version
goes into deeper detail about object handling, something the user will
not need to know about normally.

begin 664 vcl_flow.pdf
M)5!$1BTQ+C(*)<?LCZ(*-B`P(&]B:@H\/"],96YG=&@@-R`P(%(O1FEL=&5R
M("]&;&%T941E8V]D93X^"G-T<F5A;0IXG)U9RVY<QQ'=SU>TM;&\4*>KWPW#
M"QM6(@,*$,DTLC$04,-+D_:0E/C*(LZ_YU3=?MP[5A+<D2"17=//ZE.G3O5\
M4D:3,ORW_MS?[#[M_O3>JU\>=N_P*]MN\'\JUJC#S@>W_IU_N=K]7=WNHHXY
MJG_N2/T5_ZYWSE#1):L48M0^8A:;;-`PQ.)TP#A++FGOAH&R=]J&/F31Q;O"
M/P]]DFZXVOVX^Z1(#M%^[&_4=V<X1E%%NVB\.KO<S><C98W1`3,&IYUQZNQF
M]_+]M)^NGR?UYNSL;^I^^O0T/3Q^=?;K[O69>K<C$Y..2<50C'88GVS2N:B0
M,^;.Z/\_-D#TF1T0D?8^J62B#H9D"Y=/MWOUO#_\XW[:/ZM_\>ID="PIJK.W
MNY=*J>M+]?-+;$[CG_KB&_7B+Z_/7JC??U=+VYO7WW[_XN>O,,&7, at A_/IX_
M/'Q=F__FG_R?G,QZ1SI:]J75R?,--8M+1=NH1INL]J-I?=#!JSU.CE_9#]VV
MF(12!B;XSCQ.'$:?P^[RQ'%\V3;%H(M5D:S5M at BPF@5WDH*RD:*V7D7KK8YC
MWZV]WUGKHRYE]#`E:;>8H;?G-3"B64P`_JSJ,QA#NBS6J&V,:+MH/=HNVPQ'
MY]AO!3)E;1)AOJPS0H]A]/;N[K>GC^JG]V\[?OO&*GZ'HZ,O4:>Q<X>FIT7;
M%(3E\I*K:3%%]=^XJ]IE><5;1FV.9LP4X+SHL!1_Q+%T?7O]<#4".$2`%_ZW
MN$&&2S=X7`S&DJ>@$Z,]!]`@6>?E?N;F'H$(KD#$5T,Q25N3^_#>GN??[[J!
MBL>A^G"2B![SUS86:!MH/=H&ZP3K`VS%"8'P"N,/SD\EB(M^>'AXFOE.F`94
M6$!(KSKE7.Q>3O?W=_?#B3X#I`L0$3:M+8,H@,6*RAX?^(R[S84WV]L=W<>6
MUG8V&H[W9_1(VCCLM"`A(')*\MK@$YN02HA/DDGC<#;@ML/L";B,<"DV@")L
MEHV1UYYA#1KQEM.*B>P!]$'JL%:P>=*PK>#,3D?GE(].DYMY?NU5EUR`ZP<T
MNZ%BRX7H%]!T+GC>;H>F(V3,3,V`:;#4@&9O-^1TPXRL/KP"K\_?H=DWT'JT
M#=8)U@?8"DW'D<)Y9@'--^>W%X=IF8:1K\GSQRM\GC](:GN\NK][^F5$.XX$
M$"V1ZG at 5QIV/$"11.8_X"\QOP&%.H]V1>FQI[8'4;JDBQWFLD8">%"QG*N<R
MVHPO4&"<2;3WJ3;>&>/9X;H*GQ\(<X[%1NQ]&*JGC=N*59P(Y!]78&7_#@9(
M#NDL*9\Y^+(B5P01!<QMX=83=%!BSDXJ8$EOCW308<YD_U4)?7'WX5=]>?=T
M>[&6.Y?3X_YJI7=6(_;G^ZOS#X=IJT9J27PDL5`\B"+T=`D]F.?8;&T02G*K
M_-ELBUD2X`H0CE38^BPSZ+9Q(I(J:7EK757?S<)08:)SH+Y(ROOLV6[),MOV
M-M)2,0#SZ$$)X5#Z!*U95T#_:C`0CW!,&PY98246Z@*M#3:J6^@]VA;K#,>'
MV*R0L`$#@'E;=*I"^\^,#P;5*ZBS%)&I5JPB)<#5='XQW0OT"0 at E<Y0:+^_O
M;M2'\_UOT^W%T%DS!;;P@,.1MC0%Y9/WNB16C)[U%2*,&9DD8'T(".4\H\2B
MV$DX;D!')\*6,.?BC@[#$D)B7A:4G#1NL]+"7:2\SF:7S9DS0Q1P",AON*`5
M=#XQ:H$8J+7"'`/(PDR1[QU3>E!)%T(0`)YP8Y"TY"`R,O"`9@#BD.8T at 8]9
M\CIF5:)(''0.DH!S-6$)YC^;;=2&M1;"EO/3 at H=!ZC2CJ_$I>F4MBJ[Q*1$8
M%JE[R<.GC=OJ9CYY`C`<#I)3_(QHL!G%&%_W0%KF`@Y^2B5SG-B,+,17E9@^
MH)=RLJQ`?4+)8)F2()6C>-X!.N3@/^>8WAR+10#&(8UJ2NO\Y9#SK%OE(93"
MP2_SD(4L(,E[Q#<M^>ND<9OS%P<H9]Z%WU;Y"ZFY\#8HX-**E"/-$H/`$MG=
M"<P2A`(KP9E8:Y.+1B1[+-$^-U%T?1_>VG4!KAFKQ4%$L0)O$U0<]Q5JFVO&
MNH76HVVQS7!TB,V,",<3F!PW`>>+D[Z?#M?/D\#K%?C)(II69'=QMW^ZF6Y%
MB;UB69ZAKOY(ATBNTWZ\FMC()7M:@K2*>!]QQ8ZE$K\Q`)3>&89B;W>R/[:T
M=F7:Y]ZA918;2^&?5"!5LKP#9*ZT*'%E6TM9KA1S9O'A4#Y+8LRB89O``5D&
MQ!$4%V7#7#>3[$GC-I-L2B*F6)HF&SY;SCHF/_BOH&PS4JY*R,;"U.E/T6'8
M/V46QLBZL:QUF%#\_Y%AS^>'ZR,9)I3U!QEV^S#=/WZ]%E at F&09*TP#PJT&*
M`@7E%)@<K,'Y/!-BE,L$HZ.-'("/+<UWVKI$=`DLDZ at 4+B5[ICBPA<O-/D[N
M]*1Q?*<44Y1Z:[X#?E-`?>PY8`$*)/M:+[<P("[(6`,$),(R[YJ`:U'Q@=KJ
M#MDLQV4-RDJ_C#I5\M!)XS;G(5P"L?OE>OSG\I!G75,63K`1O"(LA7S#:2A'
M>45$':4)+C0QRHU6VI>D8M`G<TEO4,"R3G6$U,UTZL$3D</*<2'.-2[T5!7&
M)PW;'HSP'3MQX8*C8&P>[P5\-W at _7X!#<HA#@#0=-A*K-?*$U2U4J'IIGJ&W
M6XG=#53?E=H$AG.Y'TO4-NOLNHG6HVVRS;`^Q7:9#6+G9QF9??;3#Q+JDC/`
M[IE".4H:(U\@ZQA`XBCM7-\JKM6FX6H#4DW+F(.\=U(85_D#XN"G at IXD&[78
MB)B,67S-_,J(C+!PCRRRIY$[3F+$7A.'D$M]^;`1`CC(NLW2Q<I8:4:ZD,M)
MX[9_F\'?NZ051J^[[V?'%21>+)MQV9"-'*;SZ4O&U<BSNN5H!WL-"XHW+LK;
MH-$EV?F+GD.?9EBV;SYH#_T,JH3"KU_%R+./VM_=?#Q,C]/%(N]QO2UO4XGS
MWPV_26:15W6OK;R@``UMY)L>00S4`?$-+`09^%O(HGZ]1*;X.0",EQ=APY*U
M?L&!NHU3`1`N8<6%'==0&=Y*_-(IQ97AEWPRK)IS+<I.&,8.=)8OP?<7-Z:V
M+"*=,OJ;T!^=*-",XHRV7QZSJ<1VS%@LNZP?,SI.3JM3MD15]\+R!J0`[XWM
M5I"V$\VJZ(1A\CXQI"_5Z&B65D+U=GN8K6T3X-CZK,*O_LTRIAAK.V2:T#K,
M+RH;A\AF<4S9 at N'G4AEFL[S_ at 6JCY'445/(H5J%H'6X_XM`9VBK,+Q<6ZDRG
M;L(D#GMA!3?7$[QVG25S^5MQ=,(HWO,[_/T/4L,7(V5N9'-T<F5A;0IE;F1O
M8FH*-R`P(&]B:@HR-#@S"F5N9&]B:@HQ-2`P(&]B:@H\/"],96YG=&@@,38@
M,"!2+T9I;'1E<B`O1FQA=&5$96-O9&4^/@IS=')E86T*>)RM6MN.'+<1?9^O
MZ/@E\H,ZS3L)(P\.[,0!'"!V-O"+ at 6`U&GG7GMF5]R(AB//O.:?(8G>/;<$]
MB(3=V>*PR&+QL&[DC\,TFF'B__:Y/^U^W'V%'Q(G_$[%3L-QYR>S_IM_W.R^
M&>YV?@PY#N]W9O@;?FYWUDQE#'%(<<JC21C%E"F-*:&EA-$9<)HP^=&:98N;
M[.AMYUKT"=:,DV>+CM-;;G;_V/TXB#B3?NQ/PY^N=G_XN at P1`Z+;U9M=79P9
MC#>C"QPAC\'BJ]/NQ=>'_>'VW6'XXNKJ[\/#X<?GP^/3QU??[SZ_&K[:I32-
MWL<A%I?':`>3$Z8N at Y\<UIC1_P,2&/,+(N1IM,'G(5E^9T6$-\]W^^'=_OBO
MA\/^W?`?SIY&YU(<KK[<O1B&X?;-\.T+R#;B9_C='X>/_O+YU4?#3S\-R[8O
M/O_TLX^^_1C\OQ<F_'M[_?CX22/_RT_^DH69-(6Q%&C"0([`7=(6G\J(J6?:
MN;',I,N9RM]CX299#SE[VV(0Y^UH,C<M%CO:N<]Q]^9"/FZV*2Z,%EL;31JC
M8$L;HAL-Q,S.CM$-,4W`M.]B*[T'KK`^%^8>/L4Q+D;HM$P!!FT(R8X30*0#
M!$P]A7F*1H-#A=`>*J2.L%[%?BN*@QM=YG!E]#$)A+Z\O__A^>WPSZ^_[-CM
M<C7LSEJ..?G1FUGRC$^BNRO+Q]4&2\."OZENWB7IL-S:W\JQ^03C0)K(W2MC
M!&[E^-S>W3[>S.MV,5+[!M@>LT!;6[*U-"#&@IYXFGD:`77:A6(ZC1V<L#-Y
M;BD at 3<E]A$ZW.?:[W@)EC at 5SZ0C1.IB0>8Y&8PZ50GNHE#K"V3JVPJ1D'&/A
MC[!51E3UU\?'YVKJJ*Z"HY9"&%ZJM7F]>W%X>+A_F'4Y374[.X9R!J0++&*.
MTXB-R+#;M&<Q!3$;G59LGS4H:2U..N9^USNHX\@96YNAEY+-:,)0('\VV*5<
M//5%/11(43*TW5S"B9+FL7!/H^CYN"LXSU/@GF4_YFIY+N/;"E+LGW<I#QY*
M\[9J?JU79WD"NQ).O<$98"$-#D9F=`DT\`YMN\FX3NQW-L=,:&B+)41BYU:R
MC8[^K<'`>Y%-V0%*GLHZ>B/VNSZY?MUD:]QGLF^%I<6N%O!9"YOCJG*^N+Y[.
M?3PLO>\$"^N,76/S^E$\VM/-P_WS=_.!M_#$,`H+D-H,*U020(IU`UIN\A,<
M?C4ZG5"$GC4H:5-V8P)`>P,-;N9H#F$$-!#@PX7&)T2$0 at S-*C72>5H;=GB"
MZ3"RI8%Z.^ZJVEL'HO,"IJW0Q!0X0VGP1`!\"+5/G<XGWN-D at -,66(TL!R3X
M$6".!N"J)KQV"<7BQ)-..#HXF'./S58="HS at C,9VJ;ZYOGT:WM_<'@^4[26!
M7;);X>'^U?>'_=-P^SB\>G[\][R$"--D9O>+-4231T2IT>.\X$B;@#,.$Q,=
MW(C!X0^&+K6O6GQ?L(FKB3:G46(47R:&2M$&!*VBAU*(MX@](?[$_UW`M5E;
MD:<#TKHR6N!/?.#]\]WK^428B+"\]!TYS2T61A8KQ0<<F5,Y+>W\E)6$<RHF
MP(AI@\D>`6_J[)UN$S#F:2T3`DILH0X0>"ASZC,H#:/41.@]5,0VPODB-H=)
M!7:\$+A1U"7^[^[Q\"`&QHS6!WB;)9X412\-`(_9?P%LB^BJ>N4%R!(F!)@Z
MR%0CCG;$=/^%C0]CJH93_1`,X40_RX`6XA;B!:OW<KQ:#*+@%)A=Q+<9:-G"
MNY05T.[NGX8UV(R/EO$*SI#A?A:$ISD32PYA<[P at 1\(1&<.$$2,6Z=,Z1SK6
M2/?7LJ3?89]&$7"="KTY/.UO5KG0BF-_O;^Y?G4\_.;\J5F,4!`D)-F``#N)
M@*B911Q2AC%#8)PD<1_V)=D!R8,E2F3W8\K<JY!A"I`/G'IT'!"6\?0P7@[B
MXD/B9K3\Z2*^FC\A`$J^GSGBID99(9?$TV:*A(N@@^PF:/CKW.?:+T>9YR_8
M*E>6\Q?DV,AOM4]%[25\E-NB(W,P'*U"PWV:6S+B-_C>"6+"S'H@;T1.I,=!
MZ3V]E%WU@/$?K?(KU<9']]8`Z\/TLW,'-S&RZ.,WFN:L2=!:NH!MA/,E;#9G
MR!UA19B,TH'S3+`F\/9XO3\,LW&"]V&<LC)=[V^?;H:[P_OF2(NU9XZ4AJ^-
M\>W'"R\"VX]PQ)M)3,II;K&3&Q&<V2E*>N`QX. at 8LL.!N]AIT?K$#>X]FEK;
M`$JV&6:U3\Q(676H[*XP6C1]`J6I]BJ"MG01VPCGB]BL=IQO`UODZ<Y*#5?_
M3%M2'06VO.2N;2O:E$K2S>'Z]>'AL<:RN5B/Q2]5_N;A_C2\NM[_<%B:THXJ
M!$0N+\RZ]U%BS*YAA^-:<=AHY^@0ZO$$`E-ODD%T6U+-<>"+B'KM4 at _G=JZ;
M>3:U_J?>,.%H!QH0K`4&+TQ3PTBE?7&E&T+^#9>A;1P$$2ZX?893M5$,0Q.G
M]6DR7\"WV0T6Y#V%LR!3#,T=*036+I#.MRK!0D>13M$3-RP'(!C`$,SI?2=G
M<[-N:.2<)&N#<;8.YRO:I<K`\9+$'JI<4>J4)3UI^W&:&UI@<&1L7Z@;U9KH
M]!*VS2J=R(A3RW*?";^0(5O/*!"PL4',*8Q/1&B-1$21AB1/Z at 6^!$OY.MV5
M>MZB=,_L>@.=96)NBB5.^*1W9YY%H\+0U!MQKU2K)8[B,DFSQ4NE6K/Q(UH,
MUX4^"--B$+U>QK=5L9;>'EFU2\`%,IZ?Y7>6<0BR8'@)\?NGN<5A5P%B)"J)
M`8SW$X65^IT04"A$IE.NWS7+VOF4;B/ON[LP!L>#!05EGR`E/OOHC09'FUL[
MJ&@ZP)GPFVL/.#TE462RUSSSL\/Q]MWAH?G&R;DY[J_F_/7]_OETN!/O^A)B
M`3WQYZ;\+#W0'9S-HE8+`H\L$B'+G!38S$DB>"5G\*X;&JEIQSO]'G%>&`.+
M$3BE<*@!2)Z at J0`#`<3",LD6"'(#0BO9S&JM9IF,QZ=ED&@#Y/6I5\$%N1?Q
M;48NMM0CL'$37-^O5'9;+NWL)-:/"5;&])P39^F23",PJ/*#BQRXK#,-L?$?
M3C3>71]OSQ(-,6,_2S0D[_QDG4+,L0P"1+?PN(ZU2+^(=I at S1+N@+0N+2V>O
M38M!(LY0B+/;UBX+9[^)2^+P"7;%=PMZFALR^#R]!C4)N)8HGLL at CV9ZK#0C
M/)81R]RCY4U]!*7K%/N>6-F(4(R56AT@(J++BRD:S>)%$Z*U="';"&>KV!Z)
M0W>T3N#VS7E]>CS>[Z^?#K6T$*=@5B;B\>G^X?J[6LE",.5 at YM8FY/YA6-J9
M"I"<`C,5A3MV*4<><L>[!.(CLU`++SJEBH_LI1#J6--NA4BM:VO;J5=J=`.X
MU8X57>TB`+F$;7M]`>;?K8_\;:_0-#N*(V\7>&MT)B;H3+'W%L94':>#1S&=
MI,?B[:6=.R`OG[F%4!`T"OT2KR<:'\TK][H-W,C]KL^L'530QK^2>[.?L at A>
M'0%:1I:LJ9CG.RU/T4[F8#]4G4)6Q'EGY%@#;P$_Y%A,D^):RKS$=/1&,'P6
MH:;$(BU*$7^!P$0RV0)8,1FQEC4!*G-J-05KC5AD2WOB6Z!S"=MF;V&P at PB$
M/^@M<"K,#!VEV^8;!_MF2D>&P2F2V*]CQUCD?-G-/=H57A]!Z6ZI>D,%01^@
M8:1/T5'4A=`>*G,;8+6$S7;*5H]Z,8JTJK0P0+!L$,CQJL[1?>+H)^X"<KO,
M:,.%:OUKW"P&R'LIXZH6N1',!"7:+NVRGS%QC,1#Z(\$+N*[I)8>BUOAZ"P1
M2<DSR<E&0,QX>9(\B/X12!`X5X`O6IJ':4QS%UZ/\[W,L0\SMVP_`YF!9&(E
MK[2W+'*!-NSO3V^/AZ?#HK)@LY3?3?21D33KE;;ZWX8Q6G&6Q7CIQ]N]&.B-
M>4!+B,T>)''$3%M2O57 at JQV3AC+)#;8L,W*+]#:\VH,+V&[D#JVB2B^&F3$E
MZ:=7LVI1#/,S6`/+YP9)TN'$?(Y1-!)C2;@MKY8&32+U4KF%S<1/\!HF%W&[
M#,M2%GF#+[S+G^7E0P[,HTNJ4?(%;!)3]2RH"GU:M+C(JJC2!3XE at +_3&+\E
MI3PLSK>6>81YZI;!U at XB[U86D=5EJ6+/%]>]Q?%ME2-PDBBZI;G66"G[S)>C
MIB3647J+AAHZ0J?[!7-O at 7V1]QLZ0O5R?8I*TNDW&=KW*F)C/U_$9N\\01K&
M!I:*6;PA:QFBL^O@;Y5`PDX!'>4WU0(E(D=>)-=&IU[MLKR]#*F7YFW`EHDZ
MZA6;]0'?U_!/"T1HRWRXQHC=5B?4MI<5,N!*MJ at B0M!Q$9_4`V.D6F:$:(-N
M;T#.1:^DVU]ODQ?XL%S>?,D-@\0CVOD;.:.C-2 at XE+UNO@ZOV.C3MZ^;<,J\
M%GZSQX6US%-<(..SV\?]]</KAHR8F#?\'[#A$'P:`AP&I5[C6-YJ\![$RCM*
M0XL:6**K%RQ:C]1ZLGAFZ^MW\V,8QF5IT,3CR(;""58%PDO8JJ$#?E-8/,SJ
M+>U9%6)>"9BTU*BN8WZ8!9\G3UQZC^8;^@A*]T=3O:4]J^HCM&=7?8[^,*M+
MH3U42AWA;!V;[8=AS&=6#[.V1?<M>&\8ELNPFMWHJ67`EN-L(;@?<5T>E at S'
M+>J\O:'7>>=AYMV_B*VZ#A/D65O3*EV'Y%0FY/;&Q==W<"PEB4<)O`HR/LMH
M(G.KE&HAZ+1H\7R2W,?PV3`[$XFW,]TL7*J-171(?QXD--*J`ERX>"6R3<Q)
MD0X;&JHLST]$8";--)&N2-K%ITE\'4!S&"1G/_;'2I;O_5R]C+F,3\RO@^TI
MOF<4?/W(BP]F'37 at -!R!16TMV;5WAI:E0MN"=JZ!ST1:&T?!X<Z+ET=]&%8%
M8WN6<`D;I?X*__\''^9_UF5N9'-T<F5A;0IE;F1O8FH*,38@,"!O8FH*,S8W
M,PIE;F1O8FH*-2`P(&]B:@H\/"]4>7!E+U!A9V4O365D:6%";W@@6S`@,"`V
M,3(@-SDR70HO4F]T871E(#`O4&%R96YT(#,@,"!2"B]297-O=7)C97,\/"]0
M<F]C4V5T6R]01$8 at +U1E>'1="B]%>'1'4W1A=&4@,3(@,"!2"B]&;VYT(#$S
M(#`@4 at H^/@HO0V]N=&5N=', at -B`P(%(*/CX*96YD;V)J"C$T(#`@;V)J"CP\
M+U1Y<&4O4&%G92]-961I84)O>"!;,"`P(#8Q,B`W.3)="B]2;W1A=&4@,"]0
M87)E;G0@,R`P(%(*+U)E<V]U<F-E<SP\+U!R;V-3971;+U!$1B`O5&5X=%T*
M+T9O;G0@,3<@,"!2"CX^"B]#;VYT96YT<R`Q-2`P(%(*/CX*96YD;V)J"C,@
M,"!O8FH*/#P at +U1Y<&4 at +U!A9V5S("]+:61S(%L*-2`P(%(*,30@,"!2"ET@
M+T-O=6YT(#(*/CX*96YD;V)J"C$@,"!O8FH*/#PO5'EP92`O0V%T86QO9R`O
M4&%G97,@,R`P(%(*/CX*96YD;V)J"C0@,"!O8FH*/#PO5'EP92]%>'1'4W1A
M=&4O3F%M92]2-"]44B])9&5N=&ET>3X^"F5N9&]B:@HQ,B`P(&]B:@H\/"]2
M-`HT(#`@4CX^"F5N9&]B:@HQ,R`P(&]B:@H\/"]2.0HY(#`@4B]2,3$*,3$@
M,"!2/CX*96YD;V)J"C$W(#`@;V)J"CP\+U(Y"CD@,"!2+U(Q,0HQ,2`P(%(^
M/@IE;F1O8FH*.2`P(&]B:@H\/"]3=6)T>7!E+U1Y<&4Q+T)A<V5&;VYT+U1I
M;65S+5)O;6%N+U1Y<&4O1F]N="].86UE+U(Y/CX*96YD;V)J"C@@,"!O8FH*
M/#PO5'EP92]&;VYT1&5S8W)I<'1O<B]&;VYT3F%M92]4:6UE<RU2;VUA;CX^
M"F5N9&]B:@HQ,2`P(&]B:@H\/"]3=6)T>7!E+U1Y<&4Q+T)A<V5&;VYT+T-O
M=7)I97(O5'EP92]&;VYT+TYA;64O4C$Q/CX*96YD;V)J"C$P(#`@;V)J"CP\
M+U1Y<&4O1F]N=$1E<V-R:7!T;W(O1F]N=$YA;64O0V]U<FEE<CX^"F5N9&]B
M:@HR(#`@;V)J"CP\+U!R;V1U8V5R*$=.52!':&]S='-C<FEP="`W+C`W*3X^
M96YD;V)J"GAR968*,"`Q.`HP,#`P,#`P,#`P(#8U-3,U(&8@"C`P,#`P,#8W
M,C0@,#`P,#`@;B`*,#`P,#`P-S(P,B`P,#`P,"!N(`HP,#`P,#`V-C4X(#`P
M,#`P(&X@"C`P,#`P,#8W-S(@,#`P,#`@;B`*,#`P,#`P-C,U-"`P,#`P,"!N
M(`HP,#`P,#`P,#$U(#`P,#`P(&X@"C`P,#`P,#(U-C@@,#`P,#`@;B`*,#`P
M,#`P-S`Q,B`P,#`P,"!N(`HP,#`P,#`V.3,Y(#`P,#`P(&X@"C`P,#`P,#<Q
M-#0@,#`P,#`@;B`*,#`P,#`P-S`W,R`P,#`P,"!N(`HP,#`P,#`V.#(W(#`P
M,#`P(&X@"C`P,#`P,#8X-3<@,#`P,#`@;B`*,#`P,#`P-C4Q-"`P,#`P,"!N
M(`HP,#`P,#`R-3 at X(#`P,#`P(&X@"C`P,#`P,#8S,S,@,#`P,#`@;B`*,#`P
M,#`P-C at Y."`P,#`P,"!N(`IT<F%I;&5R"CP\("]3:7IE(#$X("]2;V]T(#$@
H,"!2("]);F9O(#(@,"!2"CX^"G-T87)T>')E9 at HW,C4R"B4E14]&"@``
`
end

--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.