diff --git a/adb/client/pairing/pairing_client.cpp b/adb/client/pairing/pairing_client.cpp index 2f878bf04..04bbcebd4 100644 --- a/adb/client/pairing/pairing_client.cpp +++ b/adb/client/pairing/pairing_client.cpp @@ -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; diff --git a/adb/pairing_connection/pairing_connection.cpp b/adb/pairing_connection/pairing_connection.cpp index a26a6b4d2..ffe49a91e 100644 --- a/adb/pairing_connection/pairing_connection.cpp +++ b/adb/pairing_connection/pairing_connection.cpp @@ -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; diff --git a/adb/transport.cpp b/adb/transport.cpp index 447a8fedf..be440e2e6 100644 --- a/adb/transport.cpp +++ b/adb/transport.cpp @@ -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