summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extlib/XMPPHP/XMLStream.php18
1 files changed, 17 insertions, 1 deletions
diff --git a/extlib/XMPPHP/XMLStream.php b/extlib/XMPPHP/XMLStream.php
index 3f85ed0f8..d23585c14 100644
--- a/extlib/XMPPHP/XMLStream.php
+++ b/extlib/XMPPHP/XMLStream.php
@@ -319,6 +319,8 @@ class XMPPHP_XMLStream {
private function __process($maximum=0) {
+ $this->log->log("__process($maximum)", XMPPHP_Log::LEVEL_VERBOSE);
+
$remaining = $maximum;
do {
@@ -336,20 +338,34 @@ class XMPPHP_XMLStream {
$secs = $remaining / 1000000;
$usecs = $remaining % 1000000;
}
+ $this->log->log("stream_select(read, write, except, $secs, $usecs)", XMPPHP_Log::LEVEL_VERBOSE);
$updated = @stream_select($read, $write, $except, $secs, $usecs);
- if ($updated > 0) {
+ if ($updated === false) {
+ $this->log->log("Error on stream_select()", XMPPHP_Log::LEVEL_VERBOSE);
+ if ($this->reconnect) {
+ $this->doReconnect();
+ } else {
+ $this->log->log("Giving up", XMPPHP_Log::LEVEL_VERBOSE);
+ fclose($this->socket);
+ return false;
+ }
+ } else if ($updated > 0) {
# XXX: Is this big enough?
+ $this->log->log("Reading from socket", XMPPHP_Log::LEVEL_VERBOSE);
$buff = @fread($this->socket, 4096);
if(!$buff) {
if($this->reconnect) {
$this->doReconnect();
} else {
+ $this->log->log("Error on fread(), reconnect", XMPPHP_Log::LEVEL_VERBOSE);
fclose($this->socket);
return false;
}
}
$this->log->log("RECV: $buff", XMPPHP_Log::LEVEL_VERBOSE);
xml_parse($this->parser, $buff, false);
+ } else {
+ # $updated == 0 means no changes during timeout.
}
$remaining -= (microtime() - $starttime);
} while (is_null($maximum) || $remaining > 0);