- Модуль: xmpp
- Путь к файлу: ~/bitrix/modules/xmpp/classes/client.php
- Класс: CXMPPClient
- Вызов: CXMPPClient::__ParseBuffer
protected function __ParseBuffer()
{
$buffer = trim($this->readBuffer);
if ($buffer == '')
return false;
if (mb_strtolower(mb_substr($buffer, 0, 5)) == '") + 1));
if (mb_strtolower(mb_substr($buffer, 0, 14)) == 'sock, 5);
}
$arRequest = CXMPPParser::ToArray($buffer);
if (!$arRequest)
return false;
CXMPPUtility::Show("<<< ".$this->jid." (".$this->xmppId.")n".$buffer, 0);
$this->readBuffer = "";
$this->pingTime = time();
if ($arRequest['server'])
{
if (isset($arRequest['server']['.']['domain']))
$clientDomain = $arRequest['server']['.']['domain'];
if (empty($clientDomain))
$clientDomain = CXMPPServer::GetDomain();
if (!CXMPPUtility::SelectDatabase($clientDomain))
{
$this->Disconnect();
return false;
}
if ($arRequest['server']['.']['uniid'] != CXMPPUtility::GetUniid($clientDomain))
{
$this->Disconnect();
return false;
}
unset($arRequest['server']);
foreach ($arRequest as $key => $value)
{
if ($value[0])
{
foreach ($value as $value0)
$this->__ProcessServerMessage(array($key => $value0), $clientDomain);
}
else
{
$this->__ProcessServerMessage(array($key => $value), $clientDomain);
}
}
$this->Disconnect();
return true;
}
foreach ($arRequest as $key => $value)
{
if ($value[0])
{
foreach ($value as $value0)
$this->__ProcessMessage(array($key => $value0));
}
else
{
$this->__ProcessMessage(array($key => $value));
}
}
return true;
}