Принудительно порвать звонок астериском.
Доброго времени суток, господа!
Уже с пол-года бьюсь над проблемой пресловутых dead lock-ов.
Смысл в том, что 90% разговоров, попадающих в deadlock - пишутся через monitor.
Странное дело, если в monitor добавить функцию b (не начинать запись, пока каналы не будут проключены) запись вообще не проиходит, хотя разговор состоялся.
Стоит убрать мониторинг - пропадают и дедлоки (за неделю ни одного). Включаешь - в течении суток набирается пачка :(
Возникла идея отрабатывать AGI скриптом системный сигнал SIGALRM И принудительно завершать разговор и скрипта, который его контролирует (в списке процессов ровно столько запущенных скриптов, сколько залоченых каналов)
Скрипт находится в состоянии ожидания ответа на последнюю команду Dial. Идея - оборвать его ожидание и послать астеру хангап. НО! Тестировал на обыкновенном разговоре - сигнал приходит, Hangup астеру посылается, но ничего не происходит. Разговор идет, пока стороны не положат трубки.
Как можно оборвать идущиц разговор?
Заранее спасибо!
|