Skip to content
This repository has been archived by the owner on Mar 19, 2021. It is now read-only.

Commit

Permalink
Receive messages of unlimited length
Browse files Browse the repository at this point in the history
  • Loading branch information
fbergkemper committed May 4, 2015
2 parents 4ff8391 + 90da6ac commit d8f7a5f
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions vendor/Bareos/library/Bareos/BSock/BareosBSock.php
Expand Up @@ -159,6 +159,7 @@ public function set_config($config)
private function ntohl($buffer)
{
$len = array();
$actual_length = 0;

$len = unpack('N', $buffer);
$actual_length = (float) $len[1];
Expand Down Expand Up @@ -230,20 +231,20 @@ private function send($msg)
private function receive($len=0)
{
$buffer = "";
$msg_len = array();
$msg_len = 0;

if ($len === 0) {
$buffer = fread($this->socket, 4);
if($buffer == false){
return false;
}
$msg_len = unpack('N', $buffer);
$msg_len = self::ntohl($buffer);
} else {
$msg_len[1] = $len;
$msg_len = $len;
}

if ($msg_len[1] > 0) {
$buffer = fread($this->socket, $msg_len[1]);
if ($msg_len > 0) {
$buffer = fread($this->socket, $msg_len);
}

return $buffer;
Expand Down Expand Up @@ -273,9 +274,18 @@ private function receive_message()
break;
}

if ($len > 0 && $len < 1000000) {
$buffer = fread($this->socket, $len);
$msg .= $buffer;
if ($len > 0 && $len < 8192) {
$msg .= fread($this->socket, $len);
} elseif($len > 8192) {
$rlen = 8192;
while ($len > 0) {
$msg .= fread($this->socket, $rlen);
$len -= $rlen;
if($len < $rlen) {
$rlen = $len;
}
}
break;
} elseif ($len < 0) {
// signal received
switch ($len) {
Expand Down

0 comments on commit d8f7a5f

Please sign in to comment.