jani            Mon Jul 21 16:16:30 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/ext/standard       streamsfuncs.c 
  Log:
  MFH: sync
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/streamsfuncs.c?r1=1.58.2.6.2.15.2.16&r2=1.58.2.6.2.15.2.17&diff_format=u
Index: php-src/ext/standard/streamsfuncs.c
diff -u php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.15.2.16 
php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.15.2.17
--- php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.15.2.16      Fri Jul 11 
10:25:15 2008
+++ php-src/ext/standard/streamsfuncs.c Mon Jul 21 16:16:30 2008
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: streamsfuncs.c,v 1.58.2.6.2.15.2.16 2008/07/11 10:25:15 tony2001 Exp $ 
*/
+/* $Id: streamsfuncs.c,v 1.58.2.6.2.15.2.17 2008/07/21 16:16:30 jani Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -233,7 +233,9 @@
 PHP_FUNCTION(stream_socket_accept)
 {
        double timeout = FG(default_socket_timeout);
-       zval *peername = NULL;
+       zval *zpeername = NULL;
+       char *peername = NULL;
+       int peername_len;
        php_timeout_ull conv;
        struct timeval tv;
        php_stream *stream = NULL, *clistream = NULL;
@@ -241,7 +243,7 @@
 
        char *errstr = NULL;
        
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|dz", &zstream, 
&timeout, &peername) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|dz", &zstream, 
&timeout, &zpeername) == FAILURE) {
                RETURN_FALSE;
        }
        
@@ -252,20 +254,20 @@
        tv.tv_sec = conv / 1000000;
        tv.tv_usec = conv % 1000000;
 
-       if (peername) {
-               zval_dtor(peername);
-               ZVAL_NULL(peername);
+       if (zpeername) {
+               zval_dtor(zpeername);
+               ZVAL_NULL(zpeername);
        }
 
        if (0 == php_stream_xport_accept(stream, &clistream,
-                               peername ? &Z_STRVAL_P(peername) : NULL,
-                               peername ? &Z_STRLEN_P(peername) : NULL,
+                               zpeername ? &peername : NULL,
+                               zpeername ? &peername_len : NULL,
                                NULL, NULL,
                                &tv, &errstr
                                TSRMLS_CC) && clistream) {
 
                if (peername) {
-                       Z_TYPE_P(peername) = IS_STRING;
+                       ZVAL_STRINGL(zpeername, peername, peername_len, 0);
                }
                php_stream_to_zval(clistream, return_value);
        } else {
@@ -286,6 +288,8 @@
        php_stream *stream;
        zval *zstream;
        zend_bool want_peer;
+       char *name = NULL;
+       int name_len;
        
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &zstream, 
&want_peer) == FAILURE) {
                RETURN_FALSE;
@@ -293,15 +297,15 @@
        
        php_stream_from_zval(stream, &zstream);
 
-       Z_TYPE_P(return_value) = IS_STRING;
-       
        if (0 != php_stream_xport_get_name(stream, want_peer,
-                               &Z_STRVAL_P(return_value),
-                               &Z_STRLEN_P(return_value),
+                               &name,
+                               &name_len,
                                NULL, NULL
                                TSRMLS_CC)) {
                RETURN_FALSE;
        }
+
+       RETURN_STRINGL(name, name_len, 0);
 }
 /* }}} */
 
@@ -340,6 +344,8 @@
 {
        php_stream *stream;
        zval *zstream, *zremote = NULL;
+       char *remote_addr = NULL;
+       int remote_addr_len;
        long to_read = 0;
        char *read_buf;
        long flags = 0;
@@ -354,7 +360,6 @@
        if (zremote) {
                zval_dtor(zremote);
                ZVAL_NULL(zremote);
-               Z_STRLEN_P(zremote) = 0;
        }
 
        if (to_read <= 0) {
@@ -365,20 +370,19 @@
        read_buf = safe_emalloc(1, to_read, 1);
        
        recvd = php_stream_xport_recvfrom(stream, read_buf, to_read, flags, 
NULL, NULL,
-                       zremote ? &Z_STRVAL_P(zremote) : NULL,
-                       zremote ? &Z_STRLEN_P(zremote) : NULL
+                       zremote ? &remote_addr : NULL,
+                       zremote ? &remote_addr_len : NULL
                        TSRMLS_CC);
 
        if (recvd >= 0) {
-               if (zremote && Z_STRLEN_P(zremote)) {
-                       Z_TYPE_P(zremote) = IS_STRING;
+               if (zremote) {
+                       ZVAL_STRINGL(zremote, remote_addr, remote_addr_len, 0);
                }
                read_buf[recvd] = '\0';
 
                if (PG(magic_quotes_runtime)) {
                        Z_TYPE_P(return_value) = IS_STRING;
-                       Z_STRVAL_P(return_value) = 
php_addslashes(Z_STRVAL_P(return_value),
-                                       Z_STRLEN_P(return_value), 
&Z_STRLEN_P(return_value), 1 TSRMLS_CC);
+                       Z_STRVAL_P(return_value) = 
php_addslashes(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value), 
&Z_STRLEN_P(return_value), 1 TSRMLS_CC);
                        return;
                } else {
                        RETURN_STRINGL(read_buf, recvd, 0);



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

Reply via email to