Заголовок Reason |
|
Один и тот же SIP-запрос может быть передан по разным причинам. Например, запрос CANCEL может передаваться прокси-сервером, размножающим запросы, если вызов обслуживался на другой ветви или прерван клиентом агента пользователя до ответа вызываемой стороны. Несмотря на то, что протокол и поведение системы одинаковы в обоих случаях, смысл передаваемого сообщения может быть существенно разным. В тех реализациях, где не предусмотрено расширение, связанное с заголовком Reason, при получении CANCEL по второй причине вызов может быть расценен как упущенный; в то же время, этот запрос будет расценен так же, если вызов принят на другом терминале пользователя. Для создания услуг часто необходимо знать причину передачи SIP-запроса. Такую информацию обеспечивает заголовок Reason. Заголовок Reason предназначен также для инкапсуляции кода окончательного ответа в предварительный ответ. Эта функция способствует решению проблемы, обозначаемой аббревиатурой HERFP (Heterogeneous Error Response Forking Problem), - ситуации, когда элемент, размножающий запросы, не может отправить окончательный отклоняющий ответ, если не получил отклоняющий ответ с каждого из направлений, по которым он отправил запрос. Заголовок Reason может содержаться в любом запросе, передаваемом в режиме диалога, в любом запросе CANCEL и в любом ответе, код которого разрешает присутствие этого заголовка. Значение поля заголовка может быть SIP с параметром «cause», указывающим код SIP-ответа. Значение может быть также - «Q.850» с параметром «cause», информирующем о коде причины, по которой было передано сообщение, в десятичном представлении в соответствии с рекомендацией ITU-T Q.850 для систем сигнализации DSS1 и ОКС7 (подсистема ISUP). SIP-сообщение может содержать более одного значения поля заголовка Reason, однако в этом случае значения должны быть различны (например, одно SIP, а другое 0.850). Программные реализации SIP должны игнорировать значеия заголовка Reason, которые им непонятны.
Клиенты и серверы могут игнорировать этот заголовок, что не повлияет на процесс обработки. Пример: |

