ps_state::~ps_state()
{
+ while (servers) {
+ FwdServer *next = servers->next;
+ cbdataReferenceDone(servers->_peer);
+ memFree(servers, MEM_FWD_SERVER);
+ servers = next;
+ }
+
if (entry) {
debugs(44, 3, entry->url());
{
FwdServer *fs = psstate->servers;
+ if (!cbdataReferenceValid(psstate->callback_data)) {
+ debugs(44, 3, "Aborting peer selection. Parent Job went away.");
+ delete psstate;
+ return;
+ }
+
// Bug 3243: CVE 2009-0801
// Bypass of browser same-origin access control in intercepted communication
// To resolve this we must use only the original client destination when going DIRECT
{
ps_state *psstate = (ps_state *)data;
+ if (!cbdataReferenceValid(psstate->callback_data)) {
+ debugs(44, 3, "Aborting peer selection. Parent Job went away.");
+ delete psstate;
+ return;
+ }
+
psstate->request->recordLookup(details);
FwdServer *fs = psstate->servers;
static void
peerSelectFoo(ps_state * ps)
{
+ if (!cbdataReferenceValid(ps->callback_data)) {
+ debugs(44, 3, "Aborting peer selection. Parent Job went away.");
+ delete ps;
+ return;
+ }
+
StoreEntry *entry = ps->entry;
HttpRequest *request = ps->request;
debugs(44, 3, "peerSelectFoo: '" << RequestMethodStr(request->method) << " " << request->GetHost() << "'");