Здравствуйте,
Dmitry Panov wrote:
> On Wed, 2006-12-06 at 05:51 -0800, Vladimir A. Butenko wrote:
>> Первое - не баг, а фича: когда началось правило "VoiceMail" - в нем стоит >> "Redirect #voicemail". А раз редирект - значит, оно посылает CANCEL всем, >> кому форкнуло. >> >> То, что Ваше приложение "не успело взять трубу" - увы. Кто не успел, тот >> опоздал. >>
Порядок их применения от stage зависит, но ожидания по таймеру не будет.
> Всё равно непонятно
> почему моё приложение не успевает. У него тоже AcceptCall() первой
> строчкой, а приоритет правила выше чем у voicemail.
А stage?
> И почему редирект должен посылать CANCEL всем остальным тоже непонятно.
> Это касается данного конкретного диалога, какое ему дело до остальных?
Диалога еще нет. Есть набор отдельных транзакций, которые надо прекратить.
>> Второе - надо логи смотреть. Причем подробные. >>
Спасибо, получили. Разбираемся.
И, похоже, проблема именно с отправкой CANCEL. Сейчас сервер не отправляет его вслепую вслед за только что ушедшим INVITE. Потому что, навстречу уже может идти 200, который "гасить" надо с помощью ACK и BYE. Но с другой стороны, непонятно - есть ли кто живой на другом конце. Поэтому SIPC ждет T2 (4 секунды) реакции с другой стороны (предположительно - 100 или 18x) и уже тогда шлет CANCEL. Проблема, похоже, в том, что приход 1хх ответа заставляет забыть этот, в общем-то уже не нужный никому SIPC объект, что он приговорен к отмене. Поправим.
>> On Wed, 06 Dec 2006 16:42:50 +0300 >> "Dmitry Panov" <CGatePro@mx.ru> wrote: >>> Добрый день. >>> >>> Решили тут сделать один эксперимент (на CGP 5.1.3). Идея такая: >>> пользовательским правилом делается fork на какое-то приложение так, >>> чтобы это правило срабатывало до редиректа на voicemail и при >>> определенных условиях делало AcceptCall(), перехватывая таким образом >>> звонок. В тестах приложение просто делало AcceptCall() всегда, после >>> чего проигрывало файл "welcome", после чего делало Disconnect(), и >>> завершалось. >>> >>> Первый облом случился сразу же, поскольку при отсутствии регистрации >>> задача, которая повешена на fork, не запускается, хотя судя по логам >>> правило сработало, и fork был: >>> >>> 13:57:05.641 4 SIGNALRULE-000046 rule(test) conditions met >>> 13:57:05.641 2 SIGNALRULE-000046 forked >>> 13:57:05.641 4 SIGNAL-000046 AOR added: sip:test1#dop@******** >>> 13:57:05.641 2 SIGNAL-000046 dop@******** has no registration, >>> trying ' >>> no response' rules >>> 13:57:05.641 4 SIGNAL-000046 cancelling all >>> 13:57:05.641 4 SIGNALRULE-000046 rule(#MailOnTimer) conditions met >>> 13:57:05.641 2 SIGNALRULE-000046 redirected >>> 13:57:05.641 4 SIGNAL-000046 cancelling all >>> 13:57:05.641 4 SIGNAL-000046 skipping 1 AORs >>> 13:57:05.641 4 SIGNAL-000046 AOR added: >>> sip:voicemail#dop@********* >>> 13:57:05.641 5 SIGNAL-000046 timeout set for 5 secs >>> 13:57:05.641 2 SIGNAL-000046 INVITE sip:voicemail#dop@********* >>> via sip: >>> voicemail#dop@********* >>> 13:57:05.641 5 NODE 76: enqueued >>> 13:57:05.641 2 PBXLEG-000076 enqueued >>> 13:57:05.641 2 PBXLEG-000076 'voicemail' created for >>> dop@******** >>> >>> При этом не имеет значения как включен voicemail, обычной галкой в Call >>> Control или сложным правилом. >>> >>> Вторая проблема выявилась после того, как эксперимент повторили когда >>> пользователь был зарегистрирован. Звонящему сказали "welcome" и повесили >>> трубку, но при этом телефон пользователя продолжал звонить. После снятия >>> трубки клиент в ответ на свои OK ничего не получал. Когда после таймаута >>> он послал BYE, в ответ пришло 481 "Transaction Does Not Exist". >>> >>> Беглый анализ трафика показал, что удаленному абоненту пришел всего один >>> Trying. Это вроде бы нормально, это значит что прокси взял на себя >>> обязательство эти диалоги разрулить. Но после положительного final >>> response от первого диалога (приложение сказало AcceptCall()) второй не >>> был отменен как логично было бы предположить. Зато уже после того, как >>> разговор с приложением завершился, видимо в момент снятия трубки, >>> звонящему пришел OK от второго диалога, который естественно был >>> проигнорирован. >>> >>> Оба эти момента очень похожи на баги в CGP, было бы очень интересно >>> послушать комментарии разработчиков. >>> >>> Best regards, >>> -- >>> Dmitry Panov >>> Chief Technology Officer >>> Itoolabs.
-- Best regards, Dmitry AkindinovПолучено Wed Dec 06 15:30:17 2006
Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:15:21 MSK