Index: net/socket/ssl_server_socket_nss.cc |
diff --git a/net/socket/ssl_server_socket_nss.cc b/net/socket/ssl_server_socket_nss.cc |
index bdcff2c1002aab343b04c8327ea970b7ec844524..0bb65bbb09f258657535c7ad890451ece5a8c588 100644 |
--- a/net/socket/ssl_server_socket_nss.cc |
+++ b/net/socket/ssl_server_socket_nss.cc |
@@ -535,7 +535,7 @@ bool SSLServerSocketNSS::DoTransportIO() { |
if (nss_bufs_ != NULL) { |
int nsent = BufferSend(); |
int nreceived = BufferRecv(); |
- network_moved = (nsent > 0 || nreceived >= 0); |
+ network_moved = (nsent > 0 || nreceived > 0); |
} |
return network_moved; |
} |
@@ -623,6 +623,11 @@ int SSLServerSocketNSS::DoReadLoop(int result) { |
rv = DoPayloadRead(); |
network_moved = DoTransportIO(); |
} while (rv == ERR_IO_PENDING && network_moved); |
+ |
+ do { |
+ network_moved = DoTransportIO(); |
+ } while (network_moved); |
+ |
return rv; |
} |
@@ -647,6 +652,11 @@ int SSLServerSocketNSS::DoWriteLoop(int result) { |
rv = DoPayloadWrite(); |
network_moved = DoTransportIO(); |
} while (rv == ERR_IO_PENDING && network_moved); |
+ |
+ do { |
+ network_moved = DoTransportIO(); |
+ } while (network_moved); |
+ |
return rv; |
} |