Новый способ обрушить астериск: пользователь заходит в конференцию, вызывает из меню конференции dial_exec, в котором этого же пользователя отправляют (ChannelRedirect) в эту же конференцию снова. После 3-4 таких попыток имеем segfault, более того, уже после первого раза этот канал нельзя будет кикнуть никакими скриптами.
Последний раз редактировалось postscripter 13 янв 2016, 09:11, всего редактировалось 1 раз.
А почему в ConfBridge-меню не с первого раза команда может срабатывать? Звонок с софтофона phoner lite.
На цифре пять стандартно висит выход из конференции и продолжение диалплана. Первый раз всегда выходит нормально, затем в диалплане у меня некоторые манипуляции, которые занимают много времени (dial), и после него опять возвращение в ту же конфу:
И как-то совершенно рандомно после возвращения отваливается меню. Чтобы оно заработало, нужно просто подождать минутку, нормализуется само. Иногда после 3-4 нажатий наконец срабатывает... В логах на максимальном уровне отладки видно прохождение dtmf, но и всё на этом:
[2016-01-14 11:09:23] DEBUG[844][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb4df6a6c of bridge 0xb504cbfc
[2016-01-14 11:09:23] DEBUG[844][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb4df6a6c of bridge 0xb504cbfc
[2016-01-14 11:09:23] DEBUG[2030][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb44883f4 of bridge 0xb504cbfc
[2016-01-14 11:09:23] DEBUG[844][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb4df6a6c of bridge 0xb504cbfc
[2016-01-14 11:09:23] DEBUG[2030][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb44883f4 of bridge 0xb504cbfc
[CHECK_CONTEXT]
dsn=asterisk_db
readsql=(SELECT data FROM sip WHERE id=${ARG1} AND keyword='context' LIMIT 1)
UNION
(SELECT data FROM dahdi WHERE id=${ARG1} AND keyword='context' LIMIT 1)
Собеседники добавляются кнопкой, назначенной на выход из конференции, обычно *5, у меня *0.
К сожалению, не вижу никакой (тривиальной) возможности завершить конференцию по выходу администратора. kick all появилась только в 12-м астериске. 12-й астер есть, кажется, в комплекте с 13-м FreePBX, но PBX я трогать не хочу, 13-я версия глючная насквозь. Насколько сложно, и вообще, возможно ли обновиться с 11.6 на 12, не трогая FreePBX?
В качестве workaround добавил RAND() при создании конференции, в старой участники могут продолжать общаться. В принципе, тоже неплохо, если в Dial поставить ограничение по времени типа L(3600000:600000).