ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> php-dev
php-dev
#44955 [NEW]: socket array keys not working as expected
by Fidojones At Fidojones Dot Com other posts by this author
May 9 2008 7:58AM messages near this date
#44956 [Com]: stripslashes() removes slashes not added by addslashes() | #44955 [Opn]: socket array keys not working as expected
From:             fidojones at fidojones dot com
Operating system: Linux
PHP version:      5.2.6
PHP Bug Type:     Sockets related
Bug description:  socket array keys not working as expected

Description:
------------
This bugfixed 

http://bugs.php.net/bug.php?id=44197

make work socket arrays some strange. 

I think that some HASH_KEY is not contemplate in switch case line 605

switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(sock_array), &key,
&key_len, &num_key, 0, NULL)) {

Nanoweb server http://nanoweb.si.kz/, when try to access it, eat cpu at
99% time with this socket patch.


Reproduce code:
---------------
<?php
$ary = array();
$strone = 'Message From Parent.';
$strtwo = 'Message From Child.';
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false) {
    echo "socket_create_pair() failed. Reason:
".socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if ($pid == -1) {
    echo 'Could not fork Process.';
} elseif ($pid) {
    /*parent*/
    socket_close($ary[0]);
    if (socket_write($ary[1], $strone, strlen($strone)) === false) {
        echo "socket_write() failed. Reason:
".socket_strerror(socket_last_error($ary[1]));
    }
    if (socket_read($ary[1], strlen($strtwo), PHP_BINARY_READ) == $strtwo)
{
        echo "Recieved $strtwo\n";
    }
    socket_close($ary[1]);
} else {
    /*child*/
    socket_close($ary[1]);
    if (socket_write($ary[0], $strtwo, strlen($strtwo)) === false) {
        echo "socket_write() failed. Reason:
".socket_strerror(socket_last_error($ary[0]));
    }
    if (socket_read($ary[0], strlen($strone), PHP_BINARY_READ) == $strone)
{
        echo "Recieved $strone\n";
    }
    socket_close($ary[0]);
}
?> 

Expected result:
----------------
php 5.2.5 result:

bash$ php socket.php 
Recieved Message From Child.
Recieved Message From Parent.


Actual result:
--------------
php 5.2.6 result:

bash# php socket.php 
Recieved Message From Child.
bash# Recieved Message From Parent.

An here wait and you should hit return to see the bash prompt again


-- 
Edit bug report at http://bugs.php.net/?id=44955&edit=1
-- 
Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=44955&r=trysnapshot52
Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=44955&r=trysnapshot53
Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=44955&r=trysnapshot60
Fixed in CVS:                 http://bugs.php.net/fix.php?id=44955&r=fixedcvs
Fixed in release:             http://bugs.php.net/fix.php?id=44955&r=alreadyfixed
Need backtrace:               http://bugs.php.net/fix.php?id=44955&r=needtrace
Need Reproduce Script:        http://bugs.php.net/fix.php?id=44955&r=needscript
Try newer version:            http://bugs.php.net/fix.php?id=44955&r=oldversion
Not developer issue:          http://bugs.php.net/fix.php?id=44955&r=support
Expected behavior:            http://bugs.php.net/fix.php?id=44955&r=notwrong
Not enough info:              http://bugs.php.net/fix.php?id=44955&r=notenoughinfo
Submitted twice:              http://bugs.php.net/fix.php?id=44955&r=submittedtwice
register_globals:             http://bugs.php.net/fix.php?id=44955&r=globals
PHP 4 support discontinued:   http://bugs.php.net/fix.php?id=44955&r=php4
Daylight Savings:             http://bugs.php.net/fix.php?id=44955&r=dst
IIS Stability:                http://bugs.php.net/fix.php?id=44955&r=isapi
Install GNU Sed:              http://bugs.php.net/fix.php?id=44955&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=44955&r=float
No Zend Extensions:           http://bugs.php.net/fix.php?id=44955&r=nozend
MySQL Configuration Error:    http://bugs.php.net/fix.php?id=44955&r=mysqlcfg
Thread:
Fidojones At Fidojones Dot Com
Fidojones At Fidojones Dot Com
felipe
jani

Privacy Policy | Email Opt-out | Feedback | Syndication
© 2004 ActiveState, a division of Sophos All rights reserved