]> granicus.if.org Git - php/commitdiff
MFH: Avoids fclose() from complaining that stream_socket_pair() streams
authorArnaud Le Blanc <lbarnaud@php.net>
Tue, 4 Nov 2008 16:48:07 +0000 (16:48 +0000)
committerArnaud Le Blanc <lbarnaud@php.net>
Tue, 4 Nov 2008 16:48:07 +0000 (16:48 +0000)
have not been closed

ext/standard/streamsfuncs.c
ext/standard/tests/streams/stream_socket_pair.phpt [new file with mode: 0644]

index d18e12f764a027cdeca6f12d2405193da5b229fb..867d2d88e98fb8a4290625251c26a6a9dfe831f1 100644 (file)
@@ -69,6 +69,11 @@ PHP_FUNCTION(stream_socket_pair)
        s1 = php_stream_sock_open_from_socket(pair[0], 0);
        s2 = php_stream_sock_open_from_socket(pair[1], 0);
 
+       /* set the __exposed flag. 
+        * php_stream_to_zval() does, add_next_index_resource() does not */
+       php_stream_auto_cleanup(s1);
+       php_stream_auto_cleanup(s2);
+
        add_next_index_resource(return_value, php_stream_get_resource_id(s1));
        add_next_index_resource(return_value, php_stream_get_resource_id(s2));
 }
diff --git a/ext/standard/tests/streams/stream_socket_pair.phpt b/ext/standard/tests/streams/stream_socket_pair.phpt
new file mode 100644 (file)
index 0000000..5556d8e
--- /dev/null
@@ -0,0 +1,22 @@
+--TEST--
+stream_socket_pair()
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') die("skip: non windows test");
+?>
+--FILE--
+<?php
+$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0);
+var_dump($sockets);
+fwrite($sockets[0], b"foo");
+var_dump(fread($sockets[1], strlen(b"foo")));
+fclose($sockets[0]);
+?>
+--EXPECTF--
+array(2) {
+  [0]=>
+  resource(%d) of type (stream)
+  [1]=>
+  resource(%d) of type (stream)
+}
+string(3) "foo"