#32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
From: stotty at tvnet dot hu Date: Sat, 29 Mar 2008 10:01:49 +0000 Subject: #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select References: 1 Groups: php.bugs Request: Send a blank email to php-bugs+get-123755@lists.php.net to get a copy of this message
ID: 32979
Comment by: stotty at tvnet dot hu
Reported By: mjpph at stardust dot fi
Status: Assigned
Bug Type: Streams related
Operating System: Linux (Fedora Core 3)
PHP Version: 5CVS-2006-01-18 (dev)
Assigned To: wez
New Comment:
Joe Orton has analyzed the bug and found the root cause, see here:
http://marc.info/?l=php-internals&m=120522857529781&w=2
Previous Comments:
------------------------------------------------------------------------
[2007-10-08 06:03:08] roberto at spadim dot com dot br
without openssl everythink work ok now, socket and stream
where could i send .php files to develop team check it?
------------------------------------------------------------------------
[2007-10-08 05:37:14] roberto at spadim dot com dot br
the problem occur with php 5.2.4
------------------------------------------------------------------------
[2007-10-08 05:32:50] roberto at spadim dot com dot br
i'm having the same problem with xeon quad core (prolian HP) on linux
socket_select work ok
but stream_select don't work
i will recompile php without openssl and check what happen
------------------------------------------------------------------------
[2006-08-25 19:19:54] stotty at tvnet dot hu
Bug is still present in 5.1.4
------------------------------------------------------------------------
[2006-01-31 23:08:00] stotty at tvnet dot hu
I have compared the original socket operations code, and the one in the
xp_ssl.x file, and it seems that even in the non-ssl path the code is
not identical.
I have fixed four differences, two of which caused some functions to be
called twice, and two of which are casting to *(int*)
I do not claim to know the real cause for the bug, and how these
changes fix the problem, but they do, and they make the code more
consistent, and faster, so I think they should be committed.
Here is the patch that solves this problem form me (against 5.1.2)
------------------------cut here-----------------------
*** php-5.1.2/ext/openssl/xp_ssl.c 2006-01-01 13:50:10.000000000 +0100
--- php-5.1.2ssl/ext/openssl/xp_ssl.c 2006-01-31 23:00:58.000000000
+0100
***************
*** 188,194 ****
} while(retry);
} else {
! didwrite = php_stream_socket_ops.write(stream, buf, count
TSRMLS_CC);
}
if (didwrite > 0) {
--- 188,195 ----
} while(retry);
} else {
! didwrite = php_stream_socket_ops.write(stream, buf, count
TSRMLS_CC);
! return didwrite;
}
if (didwrite > 0) {
***************
*** 226,231 ****
--- 227,233 ----
else
{
nr_bytes = php_stream_socket_ops.read(stream, buf, count
TSRMLS_CC);
+ return nr_bytes;
}
if (nr_bytes > 0) {
***************
*** 636,642 ****
case PHP_STREAM_AS_FD_FOR_SELECT:
if (ret) {
! *ret = (void*)sslsock->s.socket;
}
return SUCCESS;
--- 638,644 ----
case PHP_STREAM_AS_FD_FOR_SELECT:
if (ret) {
! *(int*)ret = (void*)sslsock->s.socket;
}
return SUCCESS;
***************
*** 646,652 ****
return FAILURE;
}
if (ret) {
! *ret = (void*)sslsock->s.socket;
}
return SUCCESS;
default:
--- 648,654 ----
return FAILURE;
}
if (ret) {
! *(int*)ret = (void*)sslsock->s.socket;
}
return SUCCESS;
default:
------------------------cut here-----------------------
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/32979
--
Edit this bug report at http://bugs.php.net/?id=32979&edit=1
Thread (50 messages)
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Fbk->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Fbk->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Fbk->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Fbk->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Fbk->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Fbk->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Fbk->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn->Fbk]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [NoF->Opn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Opn->Asn]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Com]: socket stream opened with stream_socket_client doesnt work with stream_select
- #32979 [Asn->Csd]: socket stream opened with stream_socket_client doesnt work with stream_select
| « previous | php.bugs (#123755) | next » |
|---|