Re: Asterisk + ooh323
Добавлено: 12 ноя 2018, 16:13
Касательно h245Address в Connect смотрю код в git.
Надо конечно повысить уровень отладки и понять в каком месте ooAcceptCall мы вываливаемся, но если доходит до этого фрагмента кода...
..., то в нем что-то не так.
!OO_TESTFLAG (call->flags, OO_M_TUNNELING) - в данном случае должно быть true
(!call->h245listener - listener должен быть создан на более раннем этапе (при отправке Progress), значит false
&& ooCreateH245Listener(call) == OO_OK) - это не вызывается, т.к. предыдущее условие - false
следовательно вся конструкция - false, поэтому переходим к
|| !call->pH245Channel)) - должно быть true, т.к. соединение согласно записи трафика не установлено.
Итого имеем: true && (false || true) что в конечном итоге будет true
Но h245Address отсутствует, значит какой-то из промежуточных выводов неверен. Дальше можно еще вывалиться из функции из-за ошибки резервирования памяти, но мне думается, что это маловероятно.
Надо конечно повысить уровень отладки и понять в каком месте ooAcceptCall мы вываливаемся, но если доходит до этого фрагмента кода...
Код: Выделить всё
/* Send h245 listener addr any case if H245 connection isn't established */
if (/* (!OO_TESTFLAG(call->flags, OO_M_FASTSTART) ||
call->remoteFastStartOLCs.count == 0) && */
!OO_TESTFLAG (call->flags, OO_M_TUNNELING) &&
( (!call->h245listener && ooCreateH245Listener(call) == OO_OK) ||
!call->pH245Channel))
!OO_TESTFLAG (call->flags, OO_M_TUNNELING) - в данном случае должно быть true
(!call->h245listener - listener должен быть создан на более раннем этапе (при отправке Progress), значит false
&& ooCreateH245Listener(call) == OO_OK) - это не вызывается, т.к. предыдущее условие - false
следовательно вся конструкция - false, поэтому переходим к
|| !call->pH245Channel)) - должно быть true, т.к. соединение согласно записи трафика не установлено.
Итого имеем: true && (false || true) что в конечном итоге будет true
Но h245Address отсутствует, значит какой-то из промежуточных выводов неверен. Дальше можно еще вывалиться из функции из-за ошибки резервирования памяти, но мне думается, что это маловероятно.