Действия сервера |
|
Сообщение CANCEL запрашивает TU на стороне сервера отмену незавершенной транзакции. Чтобы определить транзакцию, которую требуется отменить, TU принимает запрос CANCEL, а затем применяет процедуры сопоставления транзакций, описанные в § 4.4.8. Отменена может быть только единственная транзакция. Обработка запроса CANCEL сервером зависит от типа сервера. Stateless прокси-сервер его перешлет, stateful прокси-сервер может ответить на него и самостоятельно создать несколько запросов CANCEL, a UAS ответит на него. Сперва UAS производит обработку CANCEL в соответствии с общими правилами обработки для UAS. Однако поскольку запросы CANCEL передаются последовательно от одного ретрансляционного участка к другому и не могут быть переданы повторно, сервер не требует от них подтверждения подлинности (для того, чтобы они имели надлежащий отклик аутентификации в заголовке Authorization). Заметим также, что запросы CANCEL не содержат заголовка Require. Если UAS, выполняя процедуры описанные выше, не нашел соответствующую транзакцию для CANCEL, он передает на запрос CANCEL ответ с кодом 481 (Call/Transaction Does Not Exist). Если транзакция для оригинального запроса все еще существует, действия UAS при получении запроса CANCEL зависят от того, передал ли он уже окончательный ответ на оригинальный запрос или нет. Если передал, то CANCEL не оказывает влияния на обработку оригинального запроса, на состояние сеанса и на ответы на оригинальный запрос. Если UAS не передавал окончательного ответа на оригинальный запрос, его поведение зависит от типа оригинального запроса. Если таковым являлся INVITE, UAS незамедлительно передает ответ на INVITE с кодом 487 (Request Terminated). Запрос CANCEL не влияет на обработку транзакций других типов сообщений. Вне зависимости от типа оригинального запроса, поскольку было установлено соответствие между CANCEL и существующей транзакцией, UAS передает ответ с кодом 200 (ОК). Этот ответ составлен с использованием правил, с учетом того, что «tag» в заголовке То ответа на CANCEL и «tag» в заголовке То ответа на оригинальный запрос должны быть одинаковыми. Ответ на CANCEL передается серверной транзакции для передачи по сети. |

