From: Wez Furlong Date: Wed, 14 Jan 2004 14:54:14 +0000 (+0000) Subject: Probable fix for: X-Git-Tag: php-4.3.5RC2~81 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cbc8c32567cd2877c0e6c7f9c71cd13095ab466f;p=php Probable fix for: Bug #25575 stream_set_blocking with STDIN doesnt block --- diff --git a/main/network.c b/main/network.c index 0b815ff3bb..5d9c2ae73a 100644 --- a/main/network.c +++ b/main/network.c @@ -628,6 +628,22 @@ PHPAPI php_stream *_php_stream_sock_open_from_socket(int socket, const char *per memset(sock, 0, sizeof(php_netstream_data_t)); sock->is_blocked = 1; + +#if !defined(PHP_WIN32) && (defined(O_NONBLOCK) || defined(O_NDELAY)) + if (socket >= 0 && socket < 3) { + /* mini-hack: if we are opening stdin, stdout or stderr, + * we need to check to see if they are currently in + * blocking or non-blocking mode. */ + int flags = fcntl(socket, F_GETFL); + +#ifdef O_NONBLOCK + sock->is_blocked = !(flags & O_NONBLOCK); +#else + sock->is_blocked = !(flags & O_NDELAY); +#endif + } +#endif + sock->timeout.tv_sec = FG(default_socket_timeout); sock->timeout.tv_usec = 0; sock->socket = socket;