Opened 15 months ago
Last modified 15 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: