Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b273ed0 authored by Joshua Duong's avatar Joshua Duong
Browse files

Pass the os handle to the tls connection.

This fixes the tls connection failure on Windows.

Bug: 150719467

Test: 'adb pair', 'adb connect' on Windows host machine.
Test: atest adb_tls_connection_test
Change-Id: I54b8945543ad8b430510fa51dd7bea64a119454f
parent 87c00f8c
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -141,7 +141,12 @@ bool PairingClientImpl::StartConnection() {
                                          cert_.size(), priv_key_.data(), priv_key_.size()));
    CHECK(connection_);

    if (!pairing_connection_start(connection_.get(), fd.release(), OnPairingResult, this)) {
#ifdef _WIN32
    int osh = cast_handle_to_int(adb_get_os_handle(fd.release()));
#else
    int osh = adb_get_os_handle(fd.release());
#endif
    if (!pairing_connection_start(connection_.get(), osh, OnPairingResult, this)) {
        LOG(ERROR) << "PairingClient failed to start the PairingConnection";
        state_ = State::Stopped;
        return false;
+1 −1
Original line number Diff line number Diff line
@@ -278,13 +278,13 @@ bool PairingConnectionCtx::Start(int fd, ResultCallback cb, void* opaque) {
    if (fd < 0) {
        return false;
    }
    fd_.reset(fd);

    State expected = State::Ready;
    if (!state_.compare_exchange_strong(expected, State::ExchangingMsgs)) {
        return false;
    }

    fd_.reset(fd);
    cb_ = cb;
    opaque_ = opaque;

+7 −1
Original line number Diff line number Diff line
@@ -498,12 +498,18 @@ bool FdConnection::DoTlsHandshake(RSA* key, std::string* auth_key) {
    auto x509 = GenerateX509Certificate(evp_pkey.get());
    auto x509_str = X509ToPEMString(x509.get());
    auto evp_str = Key::ToPEMString(evp_pkey.get());
#ifdef _WIN32
    int osh = cast_handle_to_int(adb_get_os_handle(fd_));
#else
    int osh = adb_get_os_handle(fd_);
#endif

#if ADB_HOST
    tls_ = TlsConnection::Create(TlsConnection::Role::Client,
#else
    tls_ = TlsConnection::Create(TlsConnection::Role::Server,
#endif
                                 x509_str, evp_str, fd_);
                                 x509_str, evp_str, osh);
    CHECK(tls_);
#if ADB_HOST
    // TLS 1.3 gives the client no message if the server rejected the