class FwdServer
{
public:
+ MEMPROXY_CLASS(FwdServer);
+ FwdServer(CachePeer *p, hier_code c) : _peer(cbdataReference(p)), code(c), next(NULL) {}
+ ~FwdServer() {cbdataReferenceDone(_peer);}
+
CachePeer *_peer; /* NULL --> origin server */
hier_code code;
FwdServer *next;
};
+MEMPROXY_CLASS_INLINE(FwdServer);
+
class ps_state
{
while (servers) {
FwdServer *next = servers->next;
cbdataReferenceDone(servers->_peer);
- memFree(servers, MEM_FWD_SERVER);
+ delete servers;
servers = next;
}
// clear the used fs and continue
psstate->servers = fs->next;
cbdataReferenceDone(fs->_peer);
- memFree(fs, MEM_FWD_SERVER);
+ delete fs;
peerSelectDnsPaths(psstate);
return;
}
while (fs) {
psstate->servers = fs->next;
cbdataReferenceDone(fs->_peer);
- memFree(fs, MEM_FWD_SERVER);
+ delete fs;
fs = psstate->servers;
}
}
psstate->servers = fs->next;
cbdataReferenceDone(fs->_peer);
- memFree(fs, MEM_FWD_SERVER);
+ delete fs;
// see if more paths can be found
peerSelectDnsPaths(psstate);
peerSelectInit(void)
{
memset(&PeerStats, '\0', sizeof(PeerStats));
- memDataInit(MEM_FWD_SERVER, "FwdServer", sizeof(FwdServer), 0);
}
static void
static void
peerAddFwdServer(FwdServer ** FSVR, CachePeer * p, hier_code code)
{
- FwdServer *fs = (FwdServer *)memAllocate(MEM_FWD_SERVER);
debugs(44, 5, "peerAddFwdServer: adding " <<
(p ? p->host : "DIRECT") << " " <<
hier_code_str[code] );
- fs->_peer = cbdataReference(p);
- fs->code = code;
+ FwdServer *fs = new FwdServer(p, code);
while (*FSVR)
FSVR = &(*FSVR)->next;