Opened 7 years ago

Closed 7 years ago

#237 closed баг (fixed)

Ошибка тренсфера

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

Description

Обнаружена ошибка, проявляющаяся в следующем сценарии:

  1. Абонент 113 вызывает 111
  2. Абонент 111 отвечает
  3. Абонент 111 ставит соединение на hold и вызывает абонента 505
  4. Пока 505 звенит (не знаю, является ли это существенным обстоятельством), 111 выполняет call transfer.

Важно, что call transfer выполняется посылкой REFER удерживаемому абоненту 113, а не вызываемому 505 (для этого в коде FXS модифицирован вызов ua_refer())!

В хоте трансфера:

  1. 113 получает REFER и посылает INVITE абоненту 505.
  2. 505 посылает ответ 603 абоненту 111 и ответ 180 абоненту 113, однако абонент 113 не реагирует на полученное сообщение Ringing и продолжает проигрывать холдовую музыку!!!
  3. После ответа абонента 505 разговор происходит нормальным образом.

Причина явления в том, что абонент 113, получив сообщение Ringing, не считает его "своим", так как call_id не совпадает с active_call.id.

Change History (3)

comment:1 by alx, 7 years ago

Причина отсутствия КПВ у абонента 113 - при получении события Ringing окончание FXS проверяет, находится ли оно в состоянии Outgoing. Находящийся же на холде абонент 113 находится в состоянии Connected.

comment:2 by alx, 7 years ago

Вариантов решения два:

  1. При получении REFER и отправке INVITE окончание FXS переходит в состояние Outgoing;
  2. Принимать событие Ringing как в состоянии Outgoing, так и в состоянии Connected.

comment:3 by alx, 7 years ago

Resolution: fixed
Status: newclosed

In 1304/sip_ua:

При получении канальными окончаниями события eCallRinging в состоянии
уже установленного соединения и при отсутствии медиапотока (окончание
поставлено на холд) в TDM-канал передается сигнал КПВ. Closes #237.

Note: See TracTickets for help on using tickets.