diff options
-rw-r--r-- | src/core/lib/iomgr/iocp_windows.cc | 8 | ||||
-rw-r--r-- | test/core/surface/init_test.c | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/core/lib/iomgr/iocp_windows.cc b/src/core/lib/iomgr/iocp_windows.cc index 336cc86c75..7da60c2c14 100644 --- a/src/core/lib/iomgr/iocp_windows.cc +++ b/src/core/lib/iomgr/iocp_windows.cc @@ -21,6 +21,7 @@ #ifdef GRPC_WINSOCK_SOCKET #include <winsock2.h> +#include <limits> #include <grpc/support/alloc.h> #include <grpc/support/log.h> @@ -43,11 +44,14 @@ static HANDLE g_iocp; static DWORD deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, grpc_millis deadline) { - gpr_timespec timeout; if (deadline == GRPC_MILLIS_INF_FUTURE) { return INFINITE; } - return (DWORD)GPR_MAX(0, deadline - grpc_exec_ctx_now(exec_ctx)); + grpc_millis now = grpc_exec_ctx_now(exec_ctx); + if (deadline < now) return 0; + grpc_millis timeout = deadline - now; + if (timeout > std::numeric_limits<DWORD>::max()) return INFINITE; + return static_cast<DWORD>(deadline - now); } grpc_iocp_work_status grpc_iocp_work(grpc_exec_ctx *exec_ctx, diff --git a/test/core/surface/init_test.c b/test/core/surface/init_test.c index a9e80575af..b835a2a884 100644 --- a/test/core/surface/init_test.c +++ b/test/core/surface/init_test.c @@ -53,7 +53,7 @@ static void test_plugin() { } static void test_repeatedly() { - for (int i = 0; i < 100000; i++) { + for (int i = 0; i < 1000; i++) { grpc_init(); grpc_shutdown(); } |