anest особый респект, как одному из "первопроходцев" в 1.8
Решил попробовать эту версию.
Конфиги, где смог, поправил (стояла 1.4).
Не получается связать с IP Offce по h323
Если звоню с IPO - астериск тут же валится в кору.
Если звоню с * на IPO:
Executing [2205@office:1] Dial("SIP/linphone-00000002", "H323/2205@ipo") in new stack
[Nov 9 13:28:25] WARNING[9846]: res_rtp_asterisk.c:422 create_new_socket: Unable to allocate RTP socket: Address family not supported by protocol
[Nov 9 13:28:25] WARNING[9846]: chan_h323.c:977 __oh323_rtp_create: Unable to create RTP session: Address family not supported by protocol
-- Requested transfer capability: 0x00 - SPEECH
-- Called 2205@ipo
== Everyone is busy/congested at this time (1:0/0/1)
-- Auto fallthrough, channel 'SIP/linphone-00000002' status is 'CHANUNAVAIL'
Необходимые конфиги готов выложить.
Помогите, пожалуйста, переползти с 1.4 на 1.8
Давайте так: что надо было ставить на Centos 5.5 ?
Added after 23 minutes:
Попробуем зайти с другой стороны: * ставил отсюда. А также Dahdi-Linux-2.4.0
Dahdi-Tools-2.4.0
в make menuselect убедился, что галка на chan_h323 стоит.
Все собрал.
Карты нет.
Модуль dahdi загружен:
dahdi 196424 2
crc_ccitt 6337 1 dahdi
rpm -qa | grep pwlib
pwlib-devel-1.10.1-7.0.1.el5
pwlib-1.10.1-7.0.1.el5
rpm -qa | grep opal
opal-devel-2.2.2-1.1.0.1
opal-2.2.2-1.1.0.1
| Цитата: |
| Tested with Open H.323 version v1.18.0, PWLib v1.10.0 and GCC v3.2.2. Usage of any other (especially prior OpenH323 v1.17.3 and PWLib v1.9.2) versions is not supported. |
А ведь я читал этот кусок в ридми, но наискосок, как обычно...
Added after 27 minutes:
Подождем пока переходить, пока до ума доведут
Спасибо всем за помощь!
_________________
www.telb.kz
у меня например
| Код: |
| gcc version 4.4.4 (Gentoo 4.4.4-r2 p1.2, pie-0.4.5) |
но если валится в кору - первое что мне на ум приходит - или конфиги кривые (чтото занесли из предыдущей ветки) или (что более вероятнее) модули старые от старой ветки грузятся, нужно перед установкой все старые удалить.
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
Модули отсортировал по дате и убил старые (тем более, что * сам предупреждает после make, какие модули устарели и несовместимы).
Пытаюсь вяло копаться дальше, чем ему h323 не нравится, но как-то в тупик все больше захожу
ps: если использование аля-редхат систем не является обязательным, то советую из бинарных дистрибутивов ubuntu или на исходниках генту. с ними меньше всего проблем вознкает. в сравнении с другими. по крайней мере на сегодняшний день.
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
| Цитата: |
| ps: если использование аля-редхат систем не является обязательным, то советую из бинарных дистрибутивов ubuntu или на исходниках генту. с ними меньше всего проблем вознкает. в сравнении с другими. по крайней мере на сегодняшний день. |
А можно поподробнее? На чем основывается это утверждение? Просто Трикс строится на ЦентОСе, я думаю, не просто так.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
ps: когдато redhat был действительно неплохой os, до 7й версии включительно. потом всё изменилось. а трикс может продолжать базироваться на ней может просто "по привычке". опятьже это моё личное imho основанное на моём личном опыте. опыт разных людей может отличаться.
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
Сегодня попробывал 1.8.3 rc1 ситуация таже
| Код: |
| [Jan 20 18:53:19] -- Executing [79050233546@auto_dial:34] Dial("Local/79050233546@auto_dial-e826;2", "H323/89050233546@192.168.254.67,50,g") in new stack [Jan 20 18:53:19] WARNING[9007]: res_rtp_asterisk.c:422 create_new_socket: Unable to allocate RTP socket: Address family not supported by protocol [Jan 20 18:53:19] WARNING[9007]: chan_h323.c:977 __oh323_rtp_create: Unable to create RTP session: Address family not supported by protocol |
| Код: |
| asterisk-2*CLI> h323 show version [Jan 20 19:03:33] H.323 version: 1.18.0 asterisk-2*CLI> |
собирал по доке
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
| Код: |
| asterisk-2*CLI> module show like chan_ Module Description Use Count chan_local.so Local Proxy Channel (Note: used internal 0 chan_sip.so Session Initiation Protocol (SIP) 0 chan_h323.so The NuFone Network's OpenH323 Channel Dr 0 3 modules loaded asterisk-2*CLI> |
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
Спасибо за лекарство!
Надо попробовать!
Получается, при отключенном IPV6 1.8 будет падать в кору?
Нехорошо как-то получается...
У меня CentOS 5.5, я отключил V6:
cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
2) патч конечно веселый, но вы этим патчем убиваете IPv6 в rtp, астериска
3) проблема вообще в другой плоскости, пусть кодеры астериска разбираются что они там на Х.. вертили
4) в SIP же rtp работает? работает, значит идём логическим путём и берем патч с ooh323 и пуляем в h323
5)патч chan_h323.c
| Код: |
| static int __oh323_rtp_create(struct oh323_pvt *pvt) { struct ast_sockaddr our_addr; if (pvt->rtp) return 0; { struct ast_sockaddr tmp; ast_sockaddr_from_sin(&tmp, &bindaddr); if (ast_find_ourip(&our_addr, &tmp, AF_INET)) { ast_mutex_unlock(&pvt->lock); ast_log(LOG_ERROR, "Unable to locate local IP address for RTP stream\n"); return -1; } } our_addr.sin_family = AF_INET; //rtp = ast_rtp_instance_new("asterisk", sched, &our_addr, NULL); if (!pvt->rtp) { |
чисто по логике должно быть как то так
| Код: |
| [CC] chan_h323.c -> chan_h323.o chan_h323.c: In function ‘__oh323_rtp_create’: chan_h323.c:975: ошибка: ‘struct ast_sockaddr’ has no member named ‘sin_family’ make[1]: *** [chan_h323.o] Ошибка 1 make: *** [channels] Ошибка 2 |
хотите проверить давайте проверим
| Код: |
| our_addr.ss.ss_family = AF_INET; //name, "bindaddr")) { if (!(hp = ast_gethostbyname(v->value, &ahp))) { ast_log(LOG_WARNING, "Invalid address: %s\n", v->value); } else { memcpy(&bindaddr.sin_addr, hp->h_addr, sizeof(bindaddr.sin_addr)); } |
поидеи можно при инициализации после memset
установить AF_INET
| Цитата: |
| bindaddr.sin_family = AF_INET; |
chan_sip.c
| Код: |
| } else if (!strcasecmp(v->name, "bindaddr") || !strcasecmp(v->name, "udpbindaddr")) { if (ast_parse_arg(v->value, PARSE_ADDR, &bindaddr)) { ast_log(LOG_WARNING, "Invalid address: %s\n", v->value); } |
так что кто хочет...творите)))
bindaddr.sin_family = AF_INET;
| Код: |
| Asterisk exited on signal 6. Automatically restarting Asterisk. *** glibc detected *** /usr/sbin/asterisk: malloc(): memory corruption: 0x091a31e8 *** ======= Backtrace: ========= /lib/libc.so.6[0xbad2dd] /lib/libc.so.6(__libc_malloc+0x67)[0xbaee97] /usr/lib/libstdc++.so.6(_Znwj+0x27)[0x859ab7] /lib/libpt_linux_x86_r.so.1.10.0(_ZN8PChannelC2Ev+0x2c)[0x630a04] /lib/libpt_linux_x86_r.so.1.10.0(_ZN16PIndirectChannelC2Ev+0x27)[0x630c81] /lib/libh323_linux_x86_r.so.1.18.0(_ZN13H323TransportC2ER12H323EndPoint+0x24)[0x7802822] /lib/libh323_linux_x86_r.so.1.18.0(_ZN15H323TransportIPC2ER12H323EndPointN9PIPSocket7AddressEt+0x36)[0x780297e] /lib/libh323_linux_x86_r.so.1.18.0(_ZN16H323TransportTCPC1ER12H323EndPointN9PIPSocket7AddressEi+0x51)[0x7802f05] /usr/lib/asterisk/modules/chan_h323.so(_ZN16MyH323Connection19StartControlChannelERK21H225_TransportAddress+0x191)[0xeaa1f9] /lib/libh323_linux_x86_r.so.1.18.0(_ZN14H323Connection24OnReceivedCallProceedingERK13H323SignalPDU+0xe8)[0x77c57e2] /lib/libh323_linux_x86_r.so.1.18.0(_ZN14H323Connection15HandleSignalPDUER13H323SignalPDU+0x3de)[0x77c7370] /usr/lib/asterisk/modules/chan_h323.so(_ZN16MyH323Connection15HandleSignalPDUER13H323SignalPDU+0x911)[0xea760b] /lib/libh323_linux_x86_r.so.1.18.0(_ZN14H323Connection23HandleSignallingChannelEv+0xc5)[0x77c81ef] /lib/libh323_linux_x86_r.so.1.18.0(_ZN14H225CallThread4MainEv+0xb7)[0x77cf295] /lib/libpt_linux_x86_r.so.1.10.0(_ZN7PThread14PX_ThreadStartEPv+0x83)[0x638021] /lib/libpthread.so.0[0x90e832] /lib/libc.so.6(clone+0x5e)[0xc14f6e] .......... .......... |
так как упало в malloc
значит либо кривой линукс, либо памяти мало и опять же кривая система
либо openh323 собран с какими то не теми опциями
каким софтом сформирован этот бектреис?
потому что на gdb не похоже
а соответсвенно сложно что то сказать
собирайте и пользуйтесь chan_ooh323, его саппортит наш соотечественник
так что всегда поможет если что, поправить, пофиксить где надо
"веселый" патч на багтрекере - моих рук дело.
Но как я там и написал это лишь вершина айсберга и на самом деле он особо не помагает.
У меня это решило вопрос с крашем, но при прохождении звонка через астер bind port для rtp траффика астера равен нулю. Соответственно имеем и нулевую слышимость.
В общем, с какого-то перепуга, на RTP socket операциях Астер не может определить family для сокета.
Везде, где идет проверка на AF_INET / AF_INET6 - она заканчивается тем, что family ни то и ни другое.
Отсюда краши. И прочие прелести.
Я пока не смог разобраться в первопричине этой проблемы....
в chan.h323.c в строке 2993 после
memcpy(&bindaddr.sin_addr, hp->h_addr, sizeof(bindaddr.sin_addr));
добавил
bindaddr.sin_family = AF_INET;
Видимых ошибок я не вижу, но голос ходит только в одном направлении...
Последний раз редактировалось: mthawk (Вт Фев 01, 2011 17:05)
а насчет краша я ничерта не понял
какой и причем тут может быть краш?
хотя если бектрейс не с того ph# треида
то все вероятно
| ddkprog писал(а): |
| поднимите взгляд выше и прочитайте последние мои сообщения |
Прошу прощения.
| ddkprog писал(а): |
| собирайте и пользуйтесь chan_ooh323, его саппортит наш соотечественник так что всегда поможет если что, поправить, пофиксить где надо |
Признаюсь честно, на ooh323 еще начиная с 1.2 версии Астера у меня никогда нормально ничего не работало.
Или односторонняя слышимость, или избирательная неслышимость с некоторорыми девайсами....
Кроме того в доках к самому астеру написано примечание, что ooh323 unsupported и not recommended.
А вот на h323 все как часики.
С вашими изменениями та же проблема что и с моими...
А слышит Б, Б не слышит А.
Утро вечера мудреннее....
| Цитата: |
| Признаюсь честно, на ooh323 еще начиная с 1.2 версии Астера у меня никогда нормально ничего не работало. Или односторонняя слышимость, или избирательная неслышимость с некоторорыми девайсами.... |
ну сравнили 1.2 версии и сечас уже 1.8
к томуже еще и ru ссапорт
| Цитата: |
| Кроме того в доках к самому астеру написано примечание, что ooh323 unsupported и not recommended. |
в 1.8? )) покажите посмеемся вместе
| Цитата: |
| Но как я там и написал это лишь вершина айсберга и на самом деле он особо не помагает. У меня это решило вопрос с крашем, но при прохождении звонка через астер bind port для rtp траффика астера равен нулю. Соответственно имеем и нулевую слышимость. |
какой еще краш? там банальный unsupported proto
краш это когда падает астериск в корку
| ddkprog писал(а): |
| в 1.8? )) покажите посмеемся вместе |
вот первые строчки из configs/chan_ooh323.conf.sample:
| Код: |
| ; --------------------------------------------------------------------------------- ; --- ******* IMPORTANT NOTE *********** ; --- ; --- This module is currently unsupported. Use it at your own risk. ; --- ; --------------------------------------------------------------------------------- ; Objective System's H323 Configuration example for Asterisk ; ooh323c driver configuration |
Как бы вот.
| Цитата: |
| какой еще краш? там банальный unsupported proto краш это когда падает астериск в корку |
Прекращение работы * с сообщением на консоли Segmentation fault считается падением в кору?
К "сожалению", после всех наших заплаток он перестал это делать.
Могу собрать его из чистых исходников, что бы повторить результат:
Запущенный астер. Входящий звонок по h323. На консоли со всем включеным дебагом видим ругань о том, что Address family is not AF_INET or AF_INET6
После чего Segmentation Fault.
| Цитата: |
| вот первые строчки из configs/chan_ooh323.conf.sample: |
may213 жжет)))
ну пусть... мож кто ему это покажет в багтрекере
| Цитата: |
| Прекращение работы * с сообщением на консоли Segmentation fault считается падением в кору? |
конечно считается
просто все тычат только логи, и про fault только ефимерно рассказывают
всегда подтверждать это нужно документально
а еще лучше бектрейсом, если это возможно
| Цитата: |
| К "сожалению", после всех наших заплаток он перестал это делать. |
ну если проблему решили, гуд
Что было изменено в коде * :
channels/chan_h323.c
в строке 974
в функции __oh323_rtp_create
добавлено
our_addr.ss.ss_family = AF_INET;
в строке 2997
в функции reload_config
добавлено
bindaddr.sin_family = AF_INET;
main/netsock2.c
в строке 531
В функции _ast_sockaddr_from_sin
добавлено
addr->ss.ss_family = AF_INET;
Кроме того в h323.conf пришлось сделать
| Код: |
| FastStart=no H245Tunneling=no |
Иначе была стабильная неслышимость абонента А.
В таком виде протестировано прохождение звонков
h323 h323
sip -> h323
h323 -> sip
Передается сигнализация. rtp работает в обоих направлениях.
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
решением было бы найти из-за чего при создании сокета не заносится правильный socket_family и сделать так, что бы заносился.
Подскажи пожалуйста, в версии 1.8.11.0 нет в файле main/netsock2.c
в строке 531 функции _ast_sockaddr_from_sin. эта функция теперь находится в 551 строке. Что на что необходимо заменить?
а насчет стабильности centos - не в том суть, может он и стабильный но там понакрутили лишнего много, опятьже как проблема конфликтов пакетов была несколько лет назад так она до сих пор и осталась. я уж не говорю уже о том чего стоит только кернель перекомпилить там (если у вас не уровень выше среднего то вы попали) и тд.
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
Кстати, сами убунтовцы рассказывают про это.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones