=== modified file 'src/esi/VarState.cc' --- src/esi/VarState.cc 2012-11-19 11:29:31 +0000 +++ src/esi/VarState.cc 2013-03-21 01:32:55 +0000 @@ -857,35 +857,43 @@ delete currentFunction; } -/* XXX FIXME: this should be comma delimited, no? */ void -ESIVarState::buildVary (HttpReply *rep) +ESIVarState::buildVary(HttpReply *rep) { + /* TODO: use Key header flags. + * which will mean the eval() function above need to record what + * was scanned for in each of these replies. + * For now we generate it taking advantage of the flags being optional + * such that we can use identical Vary and key headers. + */ char tempstr[1024]; tempstr[0]='\0'; if (flags.language) - strcat (tempstr, "Accept-Language "); + strcat(tempstr, ",Accept-Language"); if (flags.cookie) - strcat (tempstr, "Cookie "); + strcat(tempstr, ",Cookie"); if (flags.host) - strcat (tempstr, "Host "); + strcat(tempstr, ",Host"); if (flags.referer) - strcat (tempstr, "Referer "); + strcat(tempstr, ",Referer"); if (flags.useragent) - strcat (tempstr, "User-Agent "); + strcat(tempstr, ",User-Agent"); if (!tempstr[0]) return; - String strVary (rep->header.getList (HDR_VARY)); - + String strVary(rep->header.getList(HDR_VARY)); if (!strVary.size() || strVary[0] != '*') { - rep->header.putStr (HDR_VARY, tempstr); + rep->header.putStr(HDR_VARY, &tempstr[1])); + } + + String strVaryKey(rep->header.getList(HDR_KEY)); + if (!strVaryKey.size()) { + rep->header.putStr(HDR_KEY, &tempstr[1]); } } -