if (isOpen()) {
comm_close(fd);
fd = -1;
+ if (_peer)
+ _peer->stats.conn_open--;
}
}
_peer = NULL;
}
- /* set the new one (unless it is NULL */
- if (p) {
+ /* set the new one (unless it is NULL */
+ if (p) {
_peer = cbdataReference(p);
- }
+ }
}
FwdState::serverClosed(int fd)
{
debugs(17, 2, HERE << "FD " << fd << " " << entry->url());
- assert(serverConnection()->fd == fd);
-
- if (serverConnection()->getPeer()) {
- serverConnection()->getPeer()->stats.conn_open--;
- }
-
retryOrBail();
}
if (serverConnection()->getPeer()) {
peerConnectFailed(serverConnection()->getPeer());
- serverConnection()->getPeer()->stats.conn_open--;
}
serverConnection()->close();
peerConnectFailed(serverConnection()->getPeer());
}
- serverConnection()->close();
+ if (isServerConnectionOpen()) {
+ serverConnection()->close();
+ }
}
/**
*/
request->flags.proxy_keepalive = 0;
/*
- * Set the dont_retry flag becuase this is not a
+ * Set the dont_retry flag because this is not a
* transient (network) error; its a bug.
*/
flags.dont_retry = 1;
- serverConnection()->close();
+ if (isServerConnectionOpen()) {
+ serverConnection()->close();
+ }
break;
}
}