}
// Use pconn to avoid opening a new connection.
- const char *host;
- if (serverDestinations[0]->getPeer()) {
- host = serverDestinations[0]->getPeer()->host;
- } else {
+ const char *host = NULL;
+ if (!serverDestinations[0]->getPeer())
host = request->GetHost();
- }
Comm::ConnectionPointer temp;
// Avoid pconns after races so that the same client does not suffer twice.
calls.connector = commCbCall(17,3, "fwdConnectDoneWrapper", CommConnectCbPtrFun(fwdConnectDoneWrapper, this));
Comm::ConnOpener *cs = new Comm::ConnOpener(serverDestinations[0], calls.connector, ctimeout);
- cs->setHost(host);
+ if (host)
+ cs->setHost(host);
AsyncJob::Start(cs);
}
FwdState::pconnPush(Comm::ConnectionPointer &conn, const char *domain)
{
if (conn->getPeer()) {
- fwdPconnPool->push(conn, conn->getPeer()->name);
+ fwdPconnPool->push(conn, NULL);
} else {
fwdPconnPool->push(conn, domain);
}
request->clientConnectionManager->pinConnection(serverConnection, request, _peer,
(request->flags.connectionAuth));
} else {
- fwd->pconnPush(serverConnection, request->peer_host ? request->peer_host : request->GetHost());
+ fwd->pconnPush(serverConnection, request->GetHost());
}
serverConnection = NULL;