On 07/04/2012 05:07 PM, Amos Jeffries wrote: > http://wiki.squid-cache.org/Features/AddonHelpers#Negotiate_and_NTLM_Scheme > > If you note, the <reason> field is usually something other than OK/ERR, > so we can parse the old syntax differently to the new OK/ERR responses. > > Where there is an overlap (BH) the <reason> field is an error message, > usually the program name and a ':' colon (not valid in the proposed > key-name) or number in brackets (again not valid in key name) or plain > text message (no '=' expected on human-readable words).
You can let setResult() and setKeyValue() methods in HelperReply children to indicate that what follows is a <blob>: NtlmHelperReply::setResult(string result) { if (result == "BH") { ... remember that the result was BH ... // no more key=value pairs; read the entire reason expectBody(true); } ... } This is not something you can easily express in a static format spec, but it will work nicely to avoid custom code when handling "reason phrases" in BH responses or ssl_crtd certificates. After expectBody() is called, the general parser will get everything up to the <terminator> and call setBody(). HTH, Alex.