wez             Wed Jan 14 09:54:15 2004 EDT

  Modified files:              (Branch: PHP_4_3)
    /php-src/main       network.c 
  Log:
  Probable fix for:
  Bug #25575 stream_set_blocking with STDIN doesnt block 
  
  
Index: php-src/main/network.c
diff -u php-src/main/network.c:1.83.2.22 php-src/main/network.c:1.83.2.23
--- php-src/main/network.c:1.83.2.22    Sat Nov 29 07:02:40 2003
+++ php-src/main/network.c      Wed Jan 14 09:54:14 2004
@@ -16,7 +16,7 @@
    | Streams work by Wez Furlong <[EMAIL PROTECTED]>                   |
    +----------------------------------------------------------------------+
  */
-/* $Id: network.c,v 1.83.2.22 2003/11/29 12:02:40 wez Exp $ */
+/* $Id: network.c,v 1.83.2.23 2004/01/14 14:54:14 wez Exp $ */
 
 /*#define DEBUG_MAIN_NETWORK 1*/
 
@@ -628,6 +628,22 @@
        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;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to