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
diff --git a/client/pairing/pairing_client.cpp b/client/pairing/pairing_client.cpp
index 2f878bf..04bbceb 100644
--- a/client/pairing/pairing_client.cpp
+++ b/client/pairing/pairing_client.cpp
@@ -141,7 +141,12 @@
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/pairing_connection/pairing_connection.cpp b/pairing_connection/pairing_connection.cpp
index a26a6b4..ffe49a9 100644
--- a/pairing_connection/pairing_connection.cpp
+++ b/pairing_connection/pairing_connection.cpp
@@ -278,13 +278,13 @@
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/transport.cpp b/transport.cpp
index 8b3461a..b7146b4 100644
--- a/transport.cpp
+++ b/transport.cpp
@@ -497,12 +497,18 @@
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