void HTTPConnector::connectSuccess() noexcept { if (!cb_) { return; } folly::SocketAddress localAddress; folly::SocketAddress peerAddress; socket_->getLocalAddress(&localAddress); socket_->getPeerAddress(&peerAddress); std::unique_ptr<HTTPCodec> codec; transportInfo_.acceptTime = getCurrentTime(); if (transportInfo_.ssl) { AsyncSSLSocket* sslSocket = dynamic_cast<AsyncSSLSocket*>(socket_.get()); const char* npnProto; unsigned npnProtoLen; sslSocket->getSelectedNextProtocol( reinterpret_cast<const unsigned char**>(&npnProto), &npnProtoLen); transportInfo_.sslNextProtocol = std::make_shared<std::string>(npnProto, npnProtoLen); transportInfo_.sslSetupTime = millisecondsSince(connectStart_); transportInfo_.sslCipher = sslSocket->getNegotiatedCipherName() ? std::make_shared<std::string>(sslSocket->getNegotiatedCipherName()) : nullptr; transportInfo_.sslVersion = sslSocket->getSSLVersion(); transportInfo_.sslResume = wangle::SSLUtil::getResumeState(sslSocket); codec = makeCodec(*transportInfo_.sslNextProtocol, forceHTTP1xCodecTo1_1_); } else { codec = makeCodec(plaintextProtocol_, forceHTTP1xCodecTo1_1_); } HTTPUpstreamSession* session = new HTTPUpstreamSession( timeoutSet_, std::move(socket_), localAddress, peerAddress, std::move(codec), transportInfo_, nullptr); cb_->connectSuccess(session); }
void HTTPConnector::connectSuccess() noexcept { if (!cb_) { return; } folly::SocketAddress localAddress; folly::SocketAddress peerAddress; socket_->getLocalAddress(&localAddress); socket_->getPeerAddress(&peerAddress); std::unique_ptr<HTTPCodec> codec; transportInfo_.acceptTime = getCurrentTime(); if (transportInfo_.secure) { AsyncSSLSocket* sslSocket = socket_->getUnderlyingTransport<AsyncSSLSocket>(); if (sslSocket) { transportInfo_.sslNextProtocol = std::make_shared<std::string>(socket_->getApplicationProtocol()); transportInfo_.sslSetupTime = millisecondsSince(connectStart_); transportInfo_.sslCipher = sslSocket->getNegotiatedCipherName() ? std::make_shared<std::string>(sslSocket->getNegotiatedCipherName()) : nullptr; transportInfo_.sslVersion = sslSocket->getSSLVersion(); transportInfo_.sslResume = wangle::SSLUtil::getResumeState(sslSocket); } codec = makeCodec(socket_->getApplicationProtocol(), forceHTTP1xCodecTo1_1_); } else { codec = makeCodec(plaintextProtocol_, forceHTTP1xCodecTo1_1_); } HTTPUpstreamSession* session = new HTTPUpstreamSession( timeout_, std::move(socket_), localAddress, peerAddress, std::move(codec), transportInfo_, nullptr); cb_->connectSuccess(session); }