Hi Roger,<div><br></div><div>Please find answers in-line.</div><div><br></div><div>Regards,</div><div>Martin Blix Grydeland<br><br><div class="gmail_quote">On Wed, Dec 12, 2012 at 3:27 PM, Roger Nesbitt <span dir="ltr"><<a href="mailto:roger@seriousorange.com" target="_blank">roger@seriousorange.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Hi Martin,</div><div><br></div><div>Thanks for the comments.  I agree your strategy is a cleaner one.  It's going to mean that I have to understand the Varnish code to a greater depth, but I've got some time free so I'm happy to do that.</div>
</div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div>How would you suggest that the user configures a particular port so that it uses the PROXY handler instead of the HTTP one?  Maybe this is a new feature that I'm not aware of.  Any docs or code you can point me at would be greatly appreciated.</div>
</div></blockquote><div> </div><div>My first thought is to add some optional prefix with the protocol selection in front on the listening options to varnishd, defaulting to http1 if not present. A bit like how the -s option is handled. E.g. "-a localhost:80 -a proxy,localhost:444 -a http1,:8080"</div>
<div><br></div><div>Some indirection should be on the listening socket structs to determine which function then should get called to set up the connection for processing by the correct fsm. Also some pointer on the session struct to point to the fsm handling the connection will be needed. Note that this is plugging code not yet existing that will have to be added as well.</div>
<div><br></div><div>We don't handle any other protocols than regular HTTP1(.1) at this time. Though the changes into two fsm's in master, one for the connection (cache_http1_fsm.c) and one for the requests (cache_req_fsm.c) should make it easier to add the PROXY support as well. So I'm thinking having a cache_proxy_fsm.c to handle the PROXY part, where the PROXY line should be read and parsed, and then changing to cache_http1_fsm.c when all has been processed and verified is the way to go. (FSM here is finite-state-machine)</div>
<div><br></div><div>Disclaimer: This is based on my understanding of Poul-Henning's vision of how the multiprotocol support will be in Varnish, so this may not be sound advice ;-)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><br></div><div>A summary document of the abbreviations used in the code would help too, I looked through the wiki but didn't find anything that explains all the three- and four-letter acronyms.</div>
</div></blockquote><div><br></div><div><a href="https://www.varnish-cache.org/trac/wiki/VTLA">https://www.varnish-cache.org/trac/wiki/VTLA</a> is the only documentation available for those, but I guess it isn't completely up-to-date. </div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div>Thanks,</div><div>Roger</div><div><div class="h5"><br>
<div><div><br></div></div></div></div></div></blockquote></div>-- <br><div><table border="0" cellpadding="0" cellspacing="0" style="font-size:12px;line-height:1.5em;font-family:'Helvetica Neue',Arial,sans-serif;color:rgb(102,102,102);width:550px;border-top-width:1px;border-top-style:solid;border-top-color:rgb(238,238,238);border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);margin-top:20px;padding-top:5px;padding-bottom:5px">
<tbody><tr><td width="100"><a href="http://varnish-software.com" target="_blank"><img src="http://www.varnish-software.com/static/media/logo-email.png"></a><span></span><span></span></td><td><strong style="font-size:14px;color:rgb(34,34,34)">Martin Blix Grydeland</strong><br>
Senior Developer | Varnish Software AS<br>Cell: +47 21 98 92 60<br><span style="font-weight:bold">We Make Websites Fly!</span></td></tr></tbody></table></div><br>
</div>