Обработка заголовка Require |
|
После того как UAS решает, что запрос предназначен для него, он приступает к анализу заголовка Require (в случае его наличия). Поле заголовка Require используется UAC, чтобы сообщить UAS о SIP-расширениях, которые тот должен поддерживать для правильной обработки запроса. Если UAS не понимает какого-либо идентификатора расширения option-tag, указанного в поле Require, он должен передать ответ с кодом 420 (Bad Extension). UAS должен добавить в ответ заголовок Unsupported со списком непонятных опций, указанных в поле Require запроса. Заметим, что заголовки Require и Proxy-Require не должны использоваться в запросе CANCEL, а также в запросе АСК, подтверждающем получение ответа, отличного от класса 2хх. Эти заголовки должны игнорироваться, даже если они имеются в таких запросах. Запрос АСК, подтверждающий прием ответа класса 2хх, должен содержать только те значения Require и Proxy-Require, которые присутствовали в начальном запросе, например: UAC -> UAS: INVITE sip: This e-mail address is being protected from spambots, you need JavaScript enabled to view it SIP/2.0 Require: lOOrel UAS -» UAC: SIP/2.0 420 Bad Extension Unsupported: lOOrel Это гарантирует, что взаимодействие между клиентом и сервером будет проходить без задержек, когда все опции понятны обеим сторонам, и будет замедляться, только если существуют разногласия, как в приведенном выше примере. Для хорошо согласованной пары клиент-сервер взаимодействие происходит быстро, так как не тратится время на работу механизмов согласования. К тому же, это устраняет проблемы, возникающие, когда клиент требует возможности, которые сервер не поддерживает. |

