fix issue #2: tls does not work anymore with 4k fix. the magic solution is to set the stream non-blocking after the first part of the packet has been received, and setting it back afterwards

This commit is contained in:
Christian Weiske 2010-02-28 14:32:56 +01:00
parent bde088057d
commit c74544c0cd

View File

@ -457,7 +457,15 @@ class XMPPHP_XMLStream {
} else if ($updated > 0) { } else if ($updated > 0) {
$buff = ''; $buff = '';
do { do {
$part = stream_socket_recvfrom($this->socket, 4096); if ($buff != '') {
//disable blocking for now because fread() will
// block until the 4k are full if we already
// read a part of the packet
stream_set_blocking($this->socket, 0);
}
$part = fread($this->socket, 4096);
stream_set_blocking($this->socket, 1);
if (!$part) { if (!$part) {
if($this->reconnect) { if($this->reconnect) {
$this->doReconnect(); $this->doReconnect();