public function update() { if ($this->server->needReconnect and $this->connected) { $this->connected = false; $this->server->needReconnect = false; } if ($this->connected) { $err = socket_last_error($this->socket->getSocket()); socket_clear_error($this->socket->getSocket()); if ($err == 10057 or $err == 10054) { $this->server->getLogger()->error("Synapse connection has disconnected unexpectedly"); $this->connected = false; $this->server->setConnected(false); } else { $data = @socket_read($this->socket->getSocket(), 65535, PHP_BINARY_READ); if ($data != "") { $this->receiveBuffer .= $data; } } } else { if (($time = microtime(true)) - $this->lastCheck >= 3) { //re-connect $this->server->getLogger()->notice("Trying to re-connect to Synapse Server"); if ($this->socket->connect()) { $this->connected = true; @socket_getpeername($this->socket->getSocket(), $address, $port); $this->ip = $address; $this->port = $port; $this->server->setConnected(true); $this->server->setNeedAuth(true); } $this->lastCheck = $time; } } }