Opened 4 months ago
Last modified 4 months ago
#439 new улучшение
Сериализовать транзакции REGISTER
Reported by: | alx | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 2 очередь |
Component: | any | Keywords: | |
Cc: |
Description
Сейчас канальные окончания SIP могут захотеть перерегистрироваться в любой произвольным момент времени (например при изменении настроек или IP адреса платы). Перерегистрация заключается в вызове ua_unregister()
, отправляющей запрос разрегистрации, и последующем вызове ua_register()
. Может так получиться, что на момент вызова ua_unregister()
еще не завершена предыдущая транзакция, и тогда ibeXosip возвращает OSIP_WRONG_STATE.
Предлагается реализовать механизм подобный тому, который был реализован для транзакций SUBSCRIBE - для каждой регистрации помнить ее состояние, и если ua_unregister() вызывается в момент незавершенной транзакции, устанавливать какой-то флаг необходимости разрегистрироваться, и посылать новый запрос после завершения текущей транзакции.
Заодно запоминать там же ts канального окончания, инициировавшего регистрацию, заменив массив ts2rid (чтобы регистрироваться могли и виртуальные канальные окончания).
In 2438/sip_ua: