debugs(5, 5, HERE << " size=" << deferred.size());
while (deferred.size() > 0 && fdNFree() >= RESERVED_FD) {
/* NP: shift() is equivalent to pop_front(). Giving us a FIFO queue. */
- if ((ConnAcceptor *temp = deferred.shift()) != NULL) {
+ ConnAcceptor *temp = deferred.shift();
+ if (temp != NULL) {
debugs(5, 5, HERE << " doing one.");
temp->isLimited--;
temp->acceptNext();
// XXX: obsolete comment?
// NP: can't be a const function because syncWithComm() side effects hit theCallSub->callback().
void
-Comm::ConnAcceptor::notify(comm_err_t flag, const Comm::ConnectionPointer &newConnDetails) const
+Comm::ConnAcceptor::notify(comm_err_t flag, const Comm::ConnectionPointer &newConnDetails)
{
// listener socket handlers just abandon the port with COMM_ERR_CLOSING
// it should only happen when this object is deleted...
}
}
- typedef CommCbMemFunT<Comm::ConnOpener, CommConnectCbParams> Dialer;
- calls_.earlyAbort_ = asyncCall(5, 4, "Comm::ConnOpener::earlyAbort",
- Dialer(this, &Comm::ConnOpener::earlyAbort));
+ typedef CommCbMemFunT<Comm::ConnOpener, CommConnectCbParams> abortDialer;
+ calls_.earlyAbort_ = JobCallback(5, 4, abortDialer, this, Comm::ConnOpener::earlyAbort);
comm_add_close_handler(conn_->fd, calls_.earlyAbort_);
- typedef CommCbMemFunT<Comm::ConnOpener, CommTimeoutCbParams> Dialer;
- calls_.timeout_ = asyncCall(5, 4, "Comm::ConnOpener::timeout",
- Dialer(this, &Comm::ConnOpener::timeout));
+ typedef CommCbMemFunT<Comm::ConnOpener, CommTimeoutCbParams> timeoutDialer;
+ calls_.timeout_ = JobCallback(5, 4, timeoutDialer, this, Comm::ConnOpener::timeout);
debugs(5, 3, HERE << conn_ << " timeout " << connectTimeout_);
commSetTimeout(conn_->fd, connectTimeout_, calls_.timeout_);
Comm::Connection::~Connection()
{
close();
- cbdataReferenceDone(getPeer());
+ if (getPeer())
+ cbdataReferenceDone(_peer);
}
Comm::ConnectionPointer
c->peerType = peerType;
c->tos = tos;
c->flags = flags;
-
+
// ensure FD is not open in the new copy.
c->fd = -1;
}
}
-peer *
+peer * const
Comm::Connection::getPeer() const
{
if (cbdataReferenceValid(_peer))