Opened 8 years ago
Closed 8 years ago
#192 closed баг (fixed)
Ошибка 0x0b04 на IP_ADDRESS_v6
Reported by: | alx | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 1 очередь |
Component: | VE-01 | Keywords: | |
Cc: |
Description
При старте платы, а также при смене адреса IPv6 вызывается comcerto_set_ip6(), которая передает в MSP FC_IP_ADDRESS_V6 с новым адресом.
Замечено, что если существует канал, которому хоть раз устанавливали IPv6 с помощью set_eth_hdr_chan(), то последующий comcerto_set_ip6() дает ошибку 0x0b04 (CNF_ERROR_IP_ADDRESS_IPCLIENT_REG). После этого в работе MSP начинаются глюки вплоть до перезагрузки платы по WDT.
Удалось воспроизвести следующим образом:
- Запускаем плату. При этом comcerto_set_ip6() устанавливает текущий адрес платы.
- Делаем вызов с разговором по IPv6 любым канальным окончанием, у которого канал всегда создан (R2, 1IND и т.п.).
- Меняем адрес IPv6 и при вызове comcerto_set_ip6() получаем ошибку.
В качестве решения предлагается:
- В stopRTP() отменять использование IPv6 с помощью SET_ETH_HDR_CHAN.
- comcerto_set_ip6() вызывать не в sip_ua.cpp, а в обработчике события "IP address changed" менеджером виртуальных каналов на первом проходе после обработки первого прохода всеми канальными окончаниями.
- Канальные окончания при получении "IP address changed" на первом проходе отключают использование IPv6 с помощью SET_ETH_HDR_CHAN (если они в данный момент используют IPv6).
- В зависимости от типа канала, на втором проходе канальное окончание может предпринять какие-то действия для восстановления RTP потока с использованием нового адреса (например послать REINVITE).
Note:
See TracTickets
for help on using tickets.
In 1084/sip_ua: