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