function _varnish_read_socket in Varnish 7
Same name and namespace in other branches
- 8 varnish.module \_varnish_read_socket()
 - 6 varnish.module \_varnish_read_socket()
 
Low-level socket read function.
@params $client an initialized socket client
$retty how many times to retry on "temporarily unavalble" errors
2 calls to _varnish_read_socket()
- _varnish_execute_command in ./
varnish.module  - Send command to varnish.
 - _varnish_terminal_run in ./
varnish.module  - Helper function that sends commands to Varnish.
 
File
- ./
varnish.module, line 419  - Common functions used for the module.
 
Code
function _varnish_read_socket($client, $retry = 2) {
  // Status and length info is always 13 characters.
  $header = socket_read($client, 13, PHP_BINARY_READ);
  if ($header == FALSE) {
    $error = socket_last_error();
    // 35 = socket-unavailable, so it might be blocked from our write.
    // This is an acceptable place to retry.
    if ($error == 35 && $retry > 0) {
      return _varnish_read_socket($client, $retry - 1);
    }
    else {
      watchdog('varnish', 'Socket error: @error', array(
        '@error' => socket_strerror($error),
      ), WATCHDOG_ERROR);
      return array(
        'code' => $error,
        'msg' => socket_strerror($error),
      );
    }
  }
  $msg_len = (int) substr($header, 4, 6) + 1;
  $status = array(
    'code' => substr($header, 0, 3),
    'msg' => socket_read($client, $msg_len, PHP_BINARY_READ),
  );
  return $status;
}