#include "err_type.h"
#include "esi/Element.h"
#include "esi/Parser.h"
+#include "http/forward.h"
#include "http/StatusCode.h"
class ESIVarState;
err_type errorpage; /* if we error what page to use */
Http::StatusCode errorstatus; /* if we error, what code to return */
char *errormessage; /* error to pass to error page */
- HttpReply *rep; /* buffered until we pass data downstream */
+ HttpReplyPointer rep; /* buffered until we pass data downstream */
ESISegment::Pointer buffered; /* unprocessed data - for whatever reason */
ESISegment::Pointer incoming;
/* processed data we are waiting to send, or for
flags.clientwantsdata = 0;
debugs(86, 5, "ESIContext::send: this=" << this << " Client no longer wants data ");
/* Deal with re-entrancy */
- HttpReply *temprep = rep;
+ HttpReplyPointer temprep = rep;
rep = NULL; /* freed downstream */
if (temprep && varState)
- varState->buildVary (temprep);
+ varState->buildVary(temprep.getRaw());
{
StoreIOBuffer tempBuffer;
tempBuffer.length = len;
tempBuffer.offset = pos - len;
tempBuffer.data = next->readBuffer.data;
- clientStreamCallback (thisNode, http, temprep, tempBuffer);
+ clientStreamCallback (thisNode, http, temprep.getRaw(), tempBuffer);
}
if (len == 0)
{
debugs(86, 5, HERE << "Freeing for this=" << this);
- HTTPMSGUNLOCK(rep);
+ rep = nullptr; // refcounted
finishChildren ();