ID: 32979
Comment by: roberto at spadim dot com dot br
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:
without openssl everythink work ok now, socket and stream
where could i send .php files to develop team check it?
Previous Comments:
------------------------------------------------------------------------
[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-----------------------
------------------------------------------------------------------------
[2006-01-30 09:41:28] stotty at tvnet dot hu
I've done some testing, and this bug is definitely triggered by 64 bit+
SSL support.
Bug triggers:
FC4 64 bit + PHP5.1.2 (configure --with-openssl)
FC4 64 bit + PHP 5.1Jan 29 snapshot (configure --with-openssl)
Bug does not trigger:
FC4 64 bit + PHP 5.1.2 (configure)
FC4 64 bit + PHP 5.1Jan29 snapshot (configure)
FC4 32 bit + PHP 5.1.2 (configure --with-openssl)
FC4 32 bit + PHP 5.0.4-10.5 (stock FC RPM)
------------------------------------------------------------------------
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