com php-src: add EAGAIN checks: main/streams/xp_socket.c
| From: | Anatol Belski | Date: | Tue, 11 Aug 2015 13:17:25 +0000 |
| Subject: | com php-src: add EAGAIN checks: main/streams/xp_socket.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88454@lists.php.net to get a copy of this message | ||
Commit: 7eb6bd1311a815ec23eb7cf06f6214f4a2d5895a
Author: Anatol Belski <ab@php.net> Tue, 11 Aug 2015 15:17:25 +0200
Parents: 8d2b131d9f4a52ea1e03ebeaaf3922abdc308d63
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=7eb6bd1311a815ec23eb7cf06f6214f4a2d5895a
Log:
add EAGAIN checks
EAGAIN and EWOULDBLOCK should be checked together and don't necessary,
have same value. So checking both is better for portability.
Changed paths:
M main/streams/xp_socket.c
Diff:
diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c
index 300a58e..da80a0a 100644
--- a/main/streams/xp_socket.c
+++ b/main/streams/xp_socket.c
@@ -77,10 +77,10 @@ retry:
didwrite = send(sock->socket, buf, XP_SOCK_BUF_SIZE(count), (sock->is_blocked &&
ptimeout) ? MSG_DONTWAIT : 0);
if (didwrite <= 0) {
- long err = php_socket_errno();
+ int err = php_socket_errno();
char *estr;
- if (sock->is_blocked && err == EWOULDBLOCK) {
+ if (sock->is_blocked && (err == EWOULDBLOCK || err == EAGAIN)) {
int retval;
sock->timeout_event = 0;
@@ -152,6 +152,7 @@ static size_t php_sockop_read(php_stream *stream, char *buf, size_t count)
{
php_netstream_data_t *sock = (php_netstream_data_t*)stream->abstract;
ssize_t nr_bytes = 0;
+ int err;
if (!sock || sock->socket == -1) {
return 0;
@@ -164,8 +165,9 @@ static size_t php_sockop_read(php_stream *stream, char *buf, size_t count)
}
nr_bytes = recv(sock->socket, buf, XP_SOCK_BUF_SIZE(count), (sock->is_blocked &&
sock->timeout.tv_sec != -1) ? MSG_DONTWAIT : 0);
+ err = php_socket_errno();
- stream->eof = (nr_bytes == 0 || (nr_bytes == -1 && php_socket_errno() != EWOULDBLOCK));
+ stream->eof = (nr_bytes == 0 || (nr_bytes == -1 && err != EWOULDBLOCK && err !=
EAGAIN));
if (nr_bytes > 0) {
php_stream_notify_progress_increment(PHP_STREAM_CONTEXT(stream), nr_bytes, 0);