* disconnect fixes

git-svn-id: svn://netflint.net/xmpphp@11 ef36c318-a008-4979-b6e8-6b496270793b
This commit is contained in:
fritzy 2008-04-02 19:48:52 +00:00
parent 98234cdc2c
commit 9bcf030bc6
3 changed files with 26 additions and 5 deletions

View File

@ -1,6 +1,6 @@
<?php <?php
include("xmpp.php"); include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'user', 'password', 'xmpphp', 'gmail.com', $printlog=True, $loglevel=LOGGING_VERBOSE); $conn = new XMPP('talk.google.com', 5222, 'user', 'password', 'xmpphp', 'gmail.com', $printlog=True, $loglevel=LOGGING_INFO);
$conn->connect(); $conn->connect();
while(!$conn->disconnected) { while(!$conn->disconnected) {
$payloads = $conn->processUntil(array('message', 'presence', 'end_stream', 'session_start')); $payloads = $conn->processUntil(array('message', 'presence', 'end_stream', 'session_start'));

View File

@ -99,7 +99,14 @@ class XMLStream {
$updated = stream_select($read, $write, $except, 1); $updated = stream_select($read, $write, $except, 1);
if ($updated > 0) { if ($updated > 0) {
$buff = fread($this->socket, 1024); $buff = fread($this->socket, 1024);
if(!$buff and $this->reconnect) $this->doReconnect(); if(!$buff) {
if($this->reconnect) {
$this->doReconnect();
} else {
fclose($this->socket);
return False;
}
}
$this->log->log("RECV: $buff", LOGGING_VERBOSE); $this->log->log("RECV: $buff", LOGGING_VERBOSE);
xml_parse($this->parser, $buff, False); xml_parse($this->parser, $buff, False);
} }
@ -116,7 +123,14 @@ class XMLStream {
$updated = stream_select($read, $write, $except, 1); $updated = stream_select($read, $write, $except, 1);
if ($updated > 0) { if ($updated > 0) {
$buff = fread($this->socket, 1024); $buff = fread($this->socket, 1024);
if(!$buff and $this->reconnect) $this->doReconnect(); if(!$buff) {
if($this->reconnect) {
$this->doReconnect();
} else {
fclose($this->socket);
return False;
}
}
$this->log->log("RECV: $buff", LOGGING_VERBOSE); $this->log->log("RECV: $buff", LOGGING_VERBOSE);
xml_parse($this->parser, $buff, False); xml_parse($this->parser, $buff, False);
} }
@ -136,7 +150,14 @@ class XMLStream {
$updated = stream_select($read, $write, $except, 1); $updated = stream_select($read, $write, $except, 1);
if ($updated > 0) { if ($updated > 0) {
$buff = fread($this->socket, 1024); $buff = fread($this->socket, 1024);
if(!$buff and $this->reconnect) $this->doReconnect(); if(!$buff) {
if($this->reconnect) {
$this->doReconnect();
} else {
fclose($this->socket);
return False;
}
}
$this->log->log("RECV: $buff", LOGGING_VERBOSE); $this->log->log("RECV: $buff", LOGGING_VERBOSE);
xml_parse($this->parser, $buff, False); xml_parse($this->parser, $buff, False);
} }

View File

@ -35,7 +35,7 @@ class XMPP extends XMLStream {
$this->password = $password; $this->password = $password;
$this->resource = $resource; $this->resource = $resource;
if(!$server) $server = $host; if(!$server) $server = $host;
$this->stream_start = '<stream:stream to="' . $server . '" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" version="1.0">\n'; $this->stream_start = '<stream:stream to="' . $server . '" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" version="1.0">';
$this->stream_end = '</stream:stream>'; $this->stream_end = '</stream:stream>';
$this->addHandler('features', 'http://etherx.jabber.org/streams', 'features_handler'); $this->addHandler('features', 'http://etherx.jabber.org/streams', 'features_handler');
$this->addHandler('success', 'urn:ietf:params:xml:ns:xmpp-sasl', 'sasl_success_handler'); $this->addHandler('success', 'urn:ietf:params:xml:ns:xmpp-sasl', 'sasl_success_handler');