Opened 8 years ago
Closed 8 years ago
#210 closed баг (готово)
Баг при переключении между линиями
Reported by: | alx | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 1 очередь |
Component: | any | Keywords: | |
Cc: |
Description
- в окончание FXO поступил вызов. Зазвенели телефоны.
- Абонент 102 ответил на вызов. Пошел разговор.
- Абонент 102 нажал Flash. Соединение с FXO ушло на холд.
- Абонент 102 набрал номер 124.
- Вызываемый ответил, состоялся разговор.
- Абонент нажал 102 и вернулся к первой линии.
- Разговор продолжился, в это время абонент 124 отбился.
- Абонент 102 нажал Flash, соединение с FXO ушло на холд.
- Абонент 102 набрал номер 203.
- В ответ на INVITE пришло "100 Trying", но больше никаких ответов не поступало.
- Абонент 102 недождался никакой реакции на вызов и снова нажал Flash. Но возврата к линии на холде не произошло!
- Абонент 102 еще несколько раз с интервалом несколько секунд нажимал Flash, но ничего не происходило.
- Абонент 102 положил трубку, в этот момент возникла ошибка при попытке сформировать сообщение REFER.
Вот фрагмент лога:
Nov 17 09:13:49 sip_ua[1298]: fxs.cpp:228: ts 2: dialing 203 Nov 17 09:13:49 sip_ua[1298]: user_agent.cpp:2426: --> ua_dial_out() "õÛÁËÏ× ÷. á." <sip:102@192.168.0.4> -> sip:203@192.168.0.4 ()... Nov 17 09:13:49 sip_ua[1320]: user_agent.cpp:1650: ---> 100 for call 352 Nov 17 09:13:49 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: Tone detected, ts=2, flags=0000, data=255 Nov 17 09:14:02 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=15 Nov 17 09:14:02 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=7 Nov 17 09:14:02 sip_ua[1298]: fxs.cpp:296: ==> flash pressed Nov 17 09:14:08 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=15 Nov 17 09:14:09 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=7 Nov 17 09:14:09 sip_ua[1298]: fxs.cpp:296: ==> flash pressed Nov 17 09:14:12 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=15 Nov 17 09:14:12 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=7 Nov 17 09:14:12 sip_ua[1298]: fxs.cpp:296: ==> flash pressed Nov 17 09:14:13 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=15 Nov 17 09:14:13 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=7 Nov 17 09:14:13 sip_ua[1298]: fxs.cpp:296: ==> flash pressed Nov 17 09:14:15 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=15 Nov 17 09:14:15 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=7 Nov 17 09:14:15 sip_ua[1298]: fxs.cpp:296: ==> flash pressed Nov 17 09:14:18 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Calling: CAS event, ts=2, flags=0000, data=15 Nov 17 09:14:18 sip_ua[1298]: user_agent.cpp:2720: eXosip_call_build_refer(did=0, referto=sip:fxo1@192.168.0.4?Replaces=901055821%3Bto-tag%3 Nov 17 09:14:21 sip_ua[1298]: fxs.cpp:402: ---> ts=2, state=Idle: Call disconnected, ts=2, flags=0000, data=352 Nov 17 09:14:45 sip_ua[1320]: user_agent.cpp:2133: ---> UPDATE in call received Nov 17 09:14:45 sip_ua[1298]: fxo.cpp:342: ---> ts=33, state=Connected: Message answered 2xx, ts=33, flags=0000, data=336
После этого линия FXO так и осталась занятой с проигрыванием ей музыки.
Change History (3)
comment:1 by , 8 years ago
comment:2 by , 8 years ago
По результатам устного обсуждения с Александром подтверждена правильность решения отбивать находящееся в предответном состоянии соединение при возврате к удерживаемому соединению.
Note:
See TracTickets
for help on using tickets.
При повторных нажатиях Flash ничего не происходило из-за того что функция
switchCalls()
умеет работать только если текущее соединение уже в отвеченном состоянии (channelStateConnected) или текущего соединения нет (active_call.id < 0).Код ошибки -2 означает
OSIP_BADPARAMETER
. Очевидно, неудача вызвана тем, что параметр did равен нулю (мы еще не знаем идентификатор диалога для нашего соединения).Для решения проблемы предлагается:
ua_refer()
чтобы не оставлять "висящих" соединений;