Opened 7 years ago

Closed 5 years ago

Last modified 5 years ago

#245 closed улучшение (fixed)

При получении сообщений SIP сохранять capabilities в дескрипторе соединения

Reported by: alx Owned by: alx
Priority: средний Milestone: 1 очередь
Component: any Keywords:
Cc:

Description

Сейчас удаленным юзер-агентам мы отправляем разные запросы (например REFER) независимо от того, поддерживает ли их UAS или нет.

Предлагается при получении запросов/ответов сохранять в дескрипторе CallData все capabilities из заголовков Allow и Supported. Их можно хранить в виде единого набора строк, переводя все в нижний регистр.

При необходимости воспользоваться расширением (например передать вызов) мы можем проверить, поддерживает ли удаленный UA необходимую функцию (например REFER), вызвав функцию типа ua_is_supported(cid, "refer"). Благодаря этому механизму можно, например, в случае, когда UAS одного из собеседников поддерживает REFER, а другого - нет, послать REFER для передачи вызова именно тому UAS, который REFER поддерживает.

Change History (4)

comment:1 by alx, 6 years ago

Milestone: 2 очередь1 очередь

comment:2 by alx, 5 years ago

Resolution: fixed
Status: newclosed

In 1487/sip_ua:

Значения полей Allow и Supported сохраняются в CallData. Closes #245.

comment:3 by alx, 5 years ago

In 1488/sip_ua:

Как выяснилось, libosip2 представляет заголовки Supported и Allow как списки тэгов.
Поэтому в CallDta строки supported и allow заменены на набор capabilities.
Соответственно, ua_is_ext_supported() и ua_is_allowed() заменены на ua_is_supported().
See #245.

comment:4 by alx, 5 years ago

In 1521/sip_ua:

Исправлена ошибка: при получении ответа от удаленного UAS поле Allow анализировалось
не из полученного ответа, а из отправленного запроса. See #245.

Note: See TracTickets for help on using tickets.