Skip to content

Commit

Permalink
Fixed bug #74090 stream_get_contents maxlength>-1 returns empty string
Browse files Browse the repository at this point in the history
  • Loading branch information
weltling committed Feb 15, 2017
1 parent 3917350 commit 89a5bd6
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
22 changes: 22 additions & 0 deletions ext/standard/tests/streams/bug74090.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--TEST--
Bug #74090 stream_get_contents maxlength>-1 returns empty string on windows
--SKIPIF--
<?php
if (getenv("SKIP_ONLINE_TESTS")) { die('skip: online test'); }
if (getenv("SKIP_SLOW_TESTS")) { die('skip: slow test'); }
?>
--FILE--
<?php
$data = base64_decode("1oIBAAABAAAAAAAAB2V4YW1wbGUDb3JnAAABAAE=");
$fd = stream_socket_client("udp://8.8.8.8:53", $errno, $errstr, 0, STREAM_CLIENT_CONNECT | STREAM_CLIENT_ASYNC_CONNECT);
stream_set_blocking($fd, 0);
stream_socket_sendto($fd,$data);
sleep(1);
$ret = stream_get_contents($fd,65565);
var_dump(strlen($ret) > 0);
stream_socket_shutdown($fd,STREAM_SHUT_RDWR);
?>
==DONE==
--EXPECTF--
bool(true)
==DONE==
4 changes: 4 additions & 0 deletions main/streams/php_streams_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@
# undef EWOULDBLOCK
# endif
# define EWOULDBLOCK WSAEWOULDBLOCK
# ifdef EMSGSIZE
# undef EMSGSIZE
# endif
# define EMSGSIZE WSAEMSGSIZE
#endif

/* This functions transforms the first char to 'w' if it's not 'r', 'a' or 'w'
Expand Down
2 changes: 1 addition & 1 deletion main/streams/xp_socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ static int php_sockop_set_option(php_stream *stream, int option, int value, void
ret = recv(sock->socket, &buf, sizeof(buf), MSG_PEEK);
err = php_socket_errno();
if (0 == ret || /* the counterpart did properly shutdown*/
(0 > ret && err != EWOULDBLOCK && err != EAGAIN)) { /* there was an unrecoverable error */
(0 > ret && err != EWOULDBLOCK && err != EAGAIN && err != EMSGSIZE)) { /* there was an unrecoverable error */
alive = 0;
}
}
Expand Down

0 comments on commit 89a5bd6

Please sign in to comment.