#48249 [Opn->Fbk]: socket_read() not returning on no more data to read

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
 ID:               48249
 Updated by:       [email protected]
 Reported By:      z4ns4tsu at gmail dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         Sockets related
 Operating System: Windows XP
 PHP Version:      5.2.9
 New Comment:

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

this with proper script and using Linux.


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

[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] [email protected]

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:<[email protected]>
250 Requested mail action okay, completed
...

Actual result:
--------------
EHLO fake.domain
<nothing>


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


-- 
Edit this bug report at http://bugs.php.net/?id=48249&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.