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:

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


Previous Comments:
------------------------------------------------------------------------

[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)

------------------------------------------------------------------------

[2005-07-28 01:50:49] lew at mailduct dot com

wez -- the problems reported here are all due to a previously fixed bug
which has crept back into PHP.  It has to do with how the PHP library
treats EOF under FreeBSD vs Linux.

You worked on this problem previously...  please take a look at the
currently active Bug #32858 reported by me, as well as your prior fix in
Bug #25649.

Thanks....
Lew Payne

------------------------------------------------------------------------

[2005-05-30 22:11:28] mjpph at stardust dot fi

I haven't had problems with different kernels. Only the combination of
x86_64, stream_socket_client() or stream_socket_server(),
stream_select() and PHP OpenSSL-support seem to reproduce this every
time.

------------------------------------------------------------------------

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

Reply via email to