• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/webdav.php
  • Класс: CDavWebDav
  • Вызов: CDavWebDav::CheckIfHeaderConditions
private function CheckIfHeaderConditions()
{
	/** @var CDavRequest $request */
	$request = $this->request;

	$httpIf = $request->GetParameter("HTTP_IF");
	if ($httpIf)
	{
		$arIfHeaderUris = $this->ParceIfHeaderConditions($httpIf);

		foreach ($arIfHeaderUris as $uri => $arConditions)
		{
			if (!$uri)
			{
				$uri = $request->GetUri();
			}

			$bMatchConditions = true;
			foreach ($arConditions as $condition)
			{
				// RFC2518 6.3 - 6.4
				if (
					!strncmp($condition, "$/', $condition)
				)
				{
					$this->HttpStatus("423 Locked");
					return false;
				}
				if (!$this->CheckIfHeaderUriCondition($uri, $condition))
				{
					$this->HttpStatus("412 Precondition failed");
					$bMatchConditions = false;
					break;
				}
			}

			if ($bMatchConditions)
			{
				return true;
			}
		}
		return false;
	}
	return true;
}