Commit e9174e66 authored by jan.koester's avatar jan.koester
Browse files

hhtp3 client support addd

parent 5f7b75ca
Loading
Loading
Loading
Loading
+18 −14
Original line number Diff line number Diff line
@@ -217,7 +217,13 @@ libhttppp::HttpClient::HttpClient(const HttpUrl& desturl)
}

void libhttppp::HttpClient::resetConnection(){
  if (_url.getProtocol() == HttpUrl::HTTPS) {
  if (_url.getProtocol() == HttpUrl::HTTP3) {
    _cltsock = std::make_unique<netplus::quic>();
    _cltsock->connect(_url.getHost(), _url.getPort(), false);
    _cltsock->setNonBlock();
    _isH2 = false;
    std::cerr << "[HttpClient] QUIC connection established" << std::endl;
  } else if (_url.getProtocol() == HttpUrl::HTTPS) {
    std::map<std::string, netplus::ssl::CertificateBundle> certs;
    auto sslsock = std::make_unique<netplus::ssl>(certs,-1);

@@ -226,29 +232,27 @@ void libhttppp::HttpClient::resetConnection(){
      std::string("\x02h2\x08http/1.1", 12);

    _cltsock = std::move(sslsock);
  } else {
    _cltsock = std::make_unique<netplus::tcp>(-1);
  }

    _cltsock->connect(_url.getHost(), _url.getPort(), false);
    _cltsock->setNonBlock();

    // Check negotiated ALPN after TLS handshake
  if (auto *sslsock = dynamic_cast<netplus::ssl*>(_cltsock.get())) {
    const std::string &alpn = sslsock->getSelectedAlpn();
    const std::string &alpn = dynamic_cast<netplus::ssl*>(_cltsock.get())->getSelectedAlpn();
    _isH2 = (alpn == "h2");
    std::cerr << "[HttpClient] ALPN negotiated: '" << alpn << "' isH2=" << _isH2 << std::endl;
  } else {
    _cltsock = std::make_unique<netplus::tcp>(-1);
    _cltsock->connect(_url.getHost(), _url.getPort(), false);
    _cltsock->setNonBlock();
    _isH2 = false;
    std::cerr << "[HttpClient] Not an SSL socket" << std::endl;
    std::cerr << "[HttpClient] Plain TCP connection" << std::endl;
  }
}


void libhttppp::HttpClient::reconnect(){
  if(_url.getProtocol() == HttpUrl::HTTPS) {
    

  if (_url.getProtocol() == HttpUrl::HTTP3) {
    _cltsock = std::make_unique<netplus::quic>();
  } else if(_url.getProtocol() == HttpUrl::HTTPS) {
    std::map<std::string, netplus::ssl::CertificateBundle> certs;
    auto sslsock = std::make_unique<netplus::ssl>(certs,-1);