diff --git a/adb/Android.bp b/adb/Android.bp index 6558b1bbf..47dafff26 100644 --- a/adb/Android.bp +++ b/adb/Android.bp @@ -221,6 +221,7 @@ cc_test_host { target: { windows: { enabled: true, + ldflags: ["-municode"], shared_libs: ["AdbWinApi"], }, }, diff --git a/adb/sysdeps_test.cpp b/adb/sysdeps_test.cpp index 79cebe6b5..0f4b39c1f 100644 --- a/adb/sysdeps_test.cpp +++ b/adb/sysdeps_test.cpp @@ -25,6 +25,21 @@ #include "sysdeps.h" #include "sysdeps/chrono.h" +#if defined(_WIN32) +#include +static bool IsWine() { + HMODULE ntdll = GetModuleHandleW(L"ntdll.dll"); + if (!ntdll) { + return false; + } + return GetProcAddress(ntdll, "wine_get_version") != nullptr; +} +#else +static bool IsWine() { + return false; +} +#endif + TEST(sysdeps_socketpair, smoke) { int fds[2]; ASSERT_EQ(0, adb_socketpair(fds)) << strerror(errno); @@ -182,8 +197,10 @@ TEST_F(sysdeps_poll, disconnect) { EXPECT_EQ(1, adb_poll(&pfd, 1, 100)); - // Linux returns POLLIN | POLLHUP, Windows returns just POLLHUP. - EXPECT_EQ(POLLHUP, pfd.revents & POLLHUP); + if (!IsWine()) { + // Linux returns POLLIN | POLLHUP, Windows returns just POLLHUP. + EXPECT_EQ(POLLHUP, pfd.revents & POLLHUP); + } } TEST_F(sysdeps_poll, fd_count) { diff --git a/adb/sysdeps_win32.cpp b/adb/sysdeps_win32.cpp index f86cd03b0..6372b3dc6 100644 --- a/adb/sysdeps_win32.cpp +++ b/adb/sysdeps_win32.cpp @@ -610,15 +610,6 @@ static void _fh_socket_init(FH f) { static int _fh_socket_close(FH f) { if (f->fh_socket != INVALID_SOCKET) { - /* gently tell any peer that we're closing the socket */ - if (shutdown(f->fh_socket, SD_BOTH) == SOCKET_ERROR) { - // If the socket is not connected, this returns an error. We want to - // minimize logging spam, so don't log these errors for now. -#if 0 - D("socket shutdown failed: %s", - android::base::SystemErrorCodeToString(WSAGetLastError()).c_str()); -#endif - } if (closesocket(f->fh_socket) == SOCKET_ERROR) { // Don't set errno here, since adb_close will ignore it. const DWORD err = WSAGetLastError();