PROTON-2130: epoll proactor io bytes accounting fix for shutdown and error
diff --git a/c/src/proactor/epoll.c b/c/src/proactor/epoll.c
index 1283d91..21c611f 100644
--- a/c/src/proactor/epoll.c
+++ b/c/src/proactor/epoll.c
@@ -1417,6 +1417,7 @@
   } else if (errno == EWOULDBLOCK) {
     pc->write_blocked = true;
   } else if (!(errno == EAGAIN || errno == EINTR)) {
+    pc->wbuf_remaining = 0;
     return false;
   }
   return true;
@@ -1586,6 +1587,7 @@
           pc->read_blocked = true;
       }
       else if (n == 0) {
+        pc->read_blocked = true;
         pn_connection_driver_read_close(&pc->driver);
       }
       else if (errno == EWOULDBLOCK)
@@ -1594,6 +1596,8 @@
         psocket_error(&pc->psocket, errno, pc->disconnected ? "disconnected" : "on read from");
       }
     }
+  } else {
+    pc->read_blocked = true;
   }
 
   if (tick_required) {