|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-10-22 16:29 UTC] ces at vaultbbs dot com
I'm writing a POP3 server daemon in PHP. Incoming requests to port 110 are routed to the POP3 server daemon by xinetd. Everything works fine if I *Telnet* to port 110. Everything also works if I just run the script from the command line. However, if I connect to my server by opening a true POP3 connection (such as from Eudora client), messages greater than about 11k cause problems when they are downloaded. I originally suspected a POP3 implementation problem on my part. However, I've confirmed that if I open a clean (non-Telnet) connection to my server and manually RETRieve the large message, the first 11k is dumped correctly but at about 11k everything else sent by PHP is garbage. It appears as though there were some kind of output buffer overflow. This also appears to damage the socket. It does NOT cause the TCP/IP connection to be terminated, but no additional output is sent and the script becomes unresponsive to additional commands sent to it. This *might* be related in some way to bug #19944 that I reported last week and which I closed this morning. This is with snap 200210220900. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 07:00:01 2025 UTC |
Code I am using is: while(ftell($mailfile) < $EndOfMessagePos) { fputs($logfile, "Getting line\n"); $line = fgets($mailfile, 4096); fputs($logfile, "Echoing line\n"); echo "$line\r\n"; $fst += strlen($line); fputs($logfile, "Sent $fst: $line\n"); } echo ".\r\n"; fputs($logfile, "Sent: CRLF\n"); fclose($logfile); End of log file returns: --START-- Getting line Echoing line Sent 11060: (unimportant email content) Getting line Echoing line Sent 11147: (unimportant email content) Getting line Echoing line --END-- Thus it appears to be hanging on the "echo" line. Again, this problem only presents itself when the script is running as a full server on a "clean" connection. If the same exact test is run connecting via the telnet command to port 110 or by running the script from the command-line there is no problem. It is my guess that the telnet command introduces some kind of flow control that is not present when I open a "real" POP3 connection to the same port.