From e60c5e38106e85363ea0c6bba242e26f76681883 Mon Sep 17 00:00:00 2001
From: Christian Blichmann <cblichmann@google.com>
Date: Tue, 4 Aug 2015 13:16:48 +0200
Subject: [PATCH] Use an unsigned pointer compare, as the highest bit may
 sometimes be set.

This fixes intermittent connection issues on 32-bit Linux. Also related
to issues #2557 and #2600.
---
 src/core/iomgr/fd_posix.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/core/iomgr/fd_posix.c b/src/core/iomgr/fd_posix.c
index a2df838d4a..91051a178e 100644
--- a/src/core/iomgr/fd_posix.c
+++ b/src/core/iomgr/fd_posix.c
@@ -376,13 +376,15 @@ gpr_uint32 grpc_fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset,
     return 0;
   }
   /* if there is nobody polling for read, but we need to, then start doing so */
-  if (read_mask && !fd->read_watcher && gpr_atm_acq_load(&fd->readst) > READY) {
+  if (read_mask && !fd->read_watcher &&
+      gpr_atm_acq_load((gpr_uintptr *)&fd->readst) > READY) {
     fd->read_watcher = watcher;
     mask |= read_mask;
   }
   /* if there is nobody polling for write, but we need to, then start doing so
    */
-  if (write_mask && !fd->write_watcher && gpr_atm_acq_load(&fd->writest) > READY) {
+  if (write_mask && !fd->write_watcher &&
+      gpr_atm_acq_load((gpr_uintptr *)&fd->writest) > READY) {
     fd->write_watcher = watcher;
     mask |= write_mask;
   }
-- 
GitLab