FwdStatePeerAnswerDialer(&FwdState::connectedToPeer, this));
// Use positive timeout when less than one second is left.
const time_t sslNegotiationTimeout = max(static_cast<time_t>(1), timeLeft());
- Ssl::PeekingPeerConnector *connector =
- new Ssl::PeekingPeerConnector(requestPointer, serverConnection(), clientConn, callback, sslNegotiationTimeout);
+ Ssl::PeerConnector *connector;
+ if (request->clientConnectionManager->connectionless()) {
+ // It is an internal request, no client connection
+ // does not make sense to peek and slpice/or bump.
+ connector = new Ssl::BlindPeerConnector(requestPointer, serverConnection(), callback, sslNegotiationTimeout);
+ } else {
+ connector = new Ssl::PeekingPeerConnector(requestPointer, serverConnection(), clientConn, callback, sslNegotiationTimeout);
+ }
AsyncJob::Start(connector); // will call our callback
return;
}
SSL_CTX *sslContext = peer->sslContext;
return sslContext;
}
- return NULL;
+ return ::Config.ssl_client.sslContext;
}
SSL *
if (!ssl)
return NULL;
- const CachePeer *peer = serverConnection()->getPeer();
- assert(peer);
+ if (const CachePeer *peer = serverConnection()->getPeer()) {
+ assert(peer);
- // NP: domain may be a raw-IP but it is now always set
- assert(!peer->secure.sslDomain.isEmpty());
+ // NP: domain may be a raw-IP but it is now always set
+ assert(!peer->secure.sslDomain.isEmpty());
- // const loss is okay here, ssl_ex_index_server is only read and not assigned a destructor
- SBuf *host = new SBuf(peer->secure.sslDomain);
- SSL_set_ex_data(ssl, ssl_ex_index_server, host);
+ // const loss is okay here, ssl_ex_index_server is only read and not assigned a destructor
+ SBuf *host = new SBuf(peer->secure.sslDomain);
+ SSL_set_ex_data(ssl, ssl_ex_index_server, host);
- if (peer->sslSession)
- SSL_set_session(ssl, peer->sslSession);
+ if (peer->sslSession)
+ SSL_set_session(ssl, peer->sslSession);
+ } else {
+ // it is not a request destined to a peer
+ SBuf *host = new SBuf(request->url.host());
+ SSL_set_ex_data(ssl, ssl_ex_index_server, host);
+ }
return ssl;
}