Edit report at http://bugs.php.net/bug.php?id=48249&edit=1

 ID:                 48249
 Comment by:         payahnih at hotmail dot com
 Reported by:        z4ns4tsu at gmail dot com
 Summary:            socket_read() not returning on no more data to read
 Status:             No Feedback
 Type:               Bug
 Package:            Sockets related
 Operating System:   Windows XP
 PHP Version:        5.2.9
 Block user comment: N

 New Comment:

I experienced the same issue on Windows XP, PHP 5.3.3.

It is silly trying to reproduce the issue in Linux, where as the problem
is happening under Windows XP, as in the original report.


Previous Comments:
------------------------------------------------------------------------
[2009-07-10 01:00:01] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

------------------------------------------------------------------------
[2009-07-02 22:09:25] j...@php.net

Please provide a complete but short example script. I can not reproduce


this with proper script and using Linux.

------------------------------------------------------------------------
[2009-05-18 19:30:37] z4ns4tsu at gmail dot com

string(133) "250-nameofdomain.com [192.168.10.100], this server offers 4
extensions

250-AUTH LOGIN

250-SIZE 30485760

250-HELP

250 AUTH=LOGIN

"



And then it hangs.

------------------------------------------------------------------------
[2009-05-14 21:58:20] j...@php.net

What DOES it return? Put 'var_dump($out);' inside the loop.

------------------------------------------------------------------------
[2009-05-12 19:54:08] z4ns4tsu at gmail dot com

Description:
------------
I am initiating a socket to an SMTP server to send a message. After
transmitting the EHLO, I need to wait for a variable number of lines to
be returned, so I am using a do{..}while() loop to check if there is
nothing more to be read from the socket before sending the next command.
 The program, however, falls into an endless wait because socket_read()
is never returning an empty string (like the documentation says it will)
or FALSE (like some other bug reports say it will).



I have tried with both the PHP_BINARY_READ and PHP_NORMAL_READ flags set
as well as with no flags set at all.

Reproduce code:
---------------
foreach($mail_head as $in) {

  $output = "";

  $in .= "\r\n";

  echo $in;

  @socket_write($socket, $in, strlen($in)) or die("Error writing to
socket: " . socket_strerror(socket_last_error()));

  do {

    $out = false;

    $out = socket_read($socket, 1024);

    $output .= $out;

  } while($out !== false && $out !== '');

  if(!preg_match('/^[23]/', $output)) {

    die("Error: Mail server did not return the expected response.");

  }

}

Expected result:
----------------
EHLO fake.domain

250-this server offers 4 extensions

250-AUTH LOGIN

250-SIZE 30485760

250-HELP

250 AUTH=LOGIN

MAIL FROM:<addr...@fake.domain>

250 Requested mail action okay, completed

...

Actual result:
--------------
EHLO fake.domain

<nothing>


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



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=48249&edit=1

Reply via email to