summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/sockets/sockets.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 9987856058..2b7085c18d 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -859,7 +859,19 @@ PHP_FUNCTION(socket_read)
}
if (retval == -1) {
- PHP_SOCKET_ERROR(php_sock, "unable to read from socket", errno);
+ /* if the socket is in non-blocking mode and there's no data to read,
+ don't output any error, as this is a normal situation, and not an error */
+ if (errno == EAGAIN
+#ifdef EWOULDBLOCK
+ || errno == EWOULDBLOCK
+#endif
+ ) {
+ php_sock->error = errno;
+ SOCKETS_G(last_error) = errno;
+ } else {
+ PHP_SOCKET_ERROR(php_sock, "unable to read from socket", errno);
+ }
+
efree(tmpbuf);
RETURN_FALSE;
}