AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Проблемы с 1.8 и h323

Newbies/FAQ Forum 39 сообщений 13.11.2010 18:51 - 15.11.2010 14:46
#1

Коллеги, приветствую!
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
#2

что ставил для поддержки H323?
#3

Сорри, не совсем понял вопроса.
Embarassed

Давайте так: что надо было ставить на Centos 5.5 ?
#4

а что вы хотите от centos получить?
#5

Доктор, меня все игнорируют Confused

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
#6

asterisk-1.8.0\channels\h323\README:

Цитата:
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.
#7

Фига себе... жестоко.. особенно gcc!
А ведь я читал этот кусок в ридми, но наискосок, как обычно...

Added after 27 minutes:

Подождем пока переходить, пока до ума доведут Smile
Спасибо всем за помощь!
#8

Это ни только такие требования в 1.8, на всех ветках так.
_________________
www.telb.kz
#9

1.4 у меня на этой же машине работал как часы
#10

а чем gcc версия так напугала? я так понимаю там указан минимум а не конкретно какая нужна.
у меня например
Код:
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
#11

Конфиги все переписал с нуля (сделал make samples и построчно правил).

Модули отсортировал по дате и убил старые (тем более, что * сам предупреждает после make, какие модули устарели и несовместимы).
Пытаюсь вяло копаться дальше, чем ему h323 не нравится, но как-то в тупик все больше захожу Sad
#12

было у меня еще как то давным давно что валилось в кору время от времени то одно то другое. оказалось толи память битая толи блок питания китайский скачки пропускал на шину питания время от времени. счас подробностей уже не помню, но помню что меня это чуть с ума не свело пока искал причину... Mad с тех пор железо использую только качественное и перед сборкой все проверяю.
ps: если использование аля-редхат систем не является обязательным, то советую из бинарных дистрибутивов ubuntu или на исходниках генту. с ними меньше всего проблем вознкает. в сравнении с другими. по крайней мере на сегодняшний день.

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#13

Цитата:
ps: если использование аля-редхат систем не является обязательным, то советую из бинарных дистрибутивов ubuntu или на исходниках генту. с ними меньше всего проблем вознкает. в сравнении с другими. по крайней мере на сегодняшний день.

А можно поподробнее? На чем основывается это утверждение? Просто Трикс строится на ЦентОСе, я думаю, не просто так.

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#14

это моё личное мнение, базирующееся на личном опыте (уж извините что забыл явно это сказать выше, я думал это и так очевидно). подробнее не скажу дабы не разводить холивар; я не прошу абсолютно верить мне, я лишь предлагаю попробовать альтернативу тем кто действительно чувствует что завяз с centos и морально готов к чемуто новому. если у вас мои слова вызывают раздражение вместо любопытства то просьба просто пройти мимо - мой месидж не для вас.
ps: когдато redhat был действительно неплохой os, до 7й версии включительно. потом всё изменилось. а трикс может продолжать базироваться на ней может просто "по привычке". опятьже это моё личное imho основанное на моём личном опыте. опыт разных людей может отличаться.

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#15

Нет, я не ради холивора спросил. Просто у меня с дебианом начинают вылезать непонятные грабли и ищется альтернатива. ubuntu - это хорошо, но у меня не получилось завести на ней safe_asterisk корректно. В смысле с поддержкой start/stop/reload. А ЦентОС - вроде как стабильность от РедХата.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#16

зачёт! Cool
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#17

Ктонибудь разобрался в чем дело ?
Сегодня попробывал 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>



собирал по доке
#18

у вас походу оба oh323 и h323 собраны, не?
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#19

нет конечно, ну и даже если собраны оба
Код:

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>
#20

расскажите подробно как собирали. соберите еще раз с нуля и прикрепите сюда лог всего что делали. только просьба не надо эти портянки сразу в форум вывешивать, крепите аттачем или на pastebin.com
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#21

вот лекарство, правда только для ipv4
#22

О!
Спасибо за лекарство!
Надо попробовать!
Получается, при отключенном IPV6 1.8 будет падать в кору?
Нехорошо как-то получается...
У меня CentOS 5.5, я отключил V6:
cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
#23

1) причем здесь кора? где вы там коредамп увидели?
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) {

чисто по логике должно быть как то так
#24

не вышло Sad

Код:
[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
#25

ну я образно говорил
хотите проверить давайте проверим

Код:
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);
}

так что кто хочет...творите)))
#26

Добавил, собралось, но крашиться
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]
..........
..........
#27

это не может быть проблемой патча
так как упало в malloc
значит либо кривой линукс, либо памяти мало и опять же кривая система
либо openh323 собран с какими то не теми опциями

каким софтом сформирован этот бектреис?
потому что на gdb не похоже
а соответсвенно сложно что то сказать

собирайте и пользуйтесь chan_ooh323, его саппортит наш соотечественник
так что всегда поможет если что, поправить, пофиксить где надо
#28

Приветствую.
"веселый" патч на багтрекере - моих рук дело.
Но как я там и написал это лишь вершина айсберга и на самом деле он особо не помагает.
У меня это решило вопрос с крашем, но при прохождении звонка через астер 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)
#29

поднимите взгляд выше и прочитайте последние мои сообщения

а насчет краша я ничерта не понял
какой и причем тут может быть краш?
хотя если бектрейс не с того ph# треида
то все вероятно
#30

ddkprog писал(а):
поднимите взгляд выше и прочитайте последние мои сообщения

Прошу прощения.
ddkprog писал(а):
собирайте и пользуйтесь chan_ooh323, его саппортит наш соотечественник
так что всегда поможет если что, поправить, пофиксить где надо

Признаюсь честно, на ooh323 еще начиная с 1.2 версии Астера у меня никогда нормально ничего не работало.
Или односторонняя слышимость, или избирательная неслышимость с некоторорыми девайсами....
Кроме того в доках к самому астеру написано примечание, что ooh323 unsupported и not recommended.
А вот на h323 все как часики.

С вашими изменениями та же проблема что и с моими...
А слышит Б, Б не слышит А.

Утро вечера мудреннее....
#31

Цитата:
Признаюсь честно, на ooh323 еще начиная с 1.2 версии Астера у меня никогда нормально ничего не работало.
Или односторонняя слышимость, или избирательная неслышимость с некоторорыми девайсами....

ну сравнили 1.2 версии и сечас уже 1.8
к томуже еще и ru ссапорт

Цитата:
Кроме того в доках к самому астеру написано примечание, что ooh323 unsupported и not recommended.

в 1.8? )) покажите посмеемся вместе


Цитата:
Но как я там и написал это лишь вершина айсберга и на самом деле он особо не помагает.
У меня это решило вопрос с крашем, но при прохождении звонка через астер bind port для rtp траффика астера равен нулю. Соответственно имеем и нулевую слышимость.

какой еще краш? там банальный unsupported proto
краш это когда падает астериск в корку
#32

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.
#33

Цитата:
вот первые строчки из configs/chan_ooh323.conf.sample:

may213 жжет)))
ну пусть... мож кто ему это покажет в багтрекере

Цитата:
Прекращение работы * с сообщением на консоли Segmentation fault считается падением в кору?

конечно считается
просто все тычат только логи, и про fault только ефимерно рассказывают
всегда подтверждать это нужно документально
а еще лучше бектрейсом, если это возможно

Цитата:
К "сожалению", после всех наших заплаток он перестал это делать.

ну если проблему решили, гуд
#34

В общем хотелось бы подвести черту.
Что было изменено в коде * :
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 работает в обоих направлениях.
#35

mthawk, зачет. правда я уже гдето на днях тут видел это решение, но конкретной инструкции не было еще. может отправите также в багтрек? чтобы в следующих версиях уже не патчить ничего руками..
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#36

anest, это не решение. это заплатка для серверов только под ipv4.
решением было бы найти из-за чего при создании сокета не заносится правильный socket_family и сделать так, что бы заносился.
#37

to mthawk:
Подскажи пожалуйста, в версии 1.8.11.0 нет в файле main/netsock2.c
в строке 531 функции _ast_sockaddr_from_sin. эта функция теперь находится в 551 строке. Что на что необходимо заменить?
#38 13.11.2010 18:51

хм, ну со скриптом то разобраться уж я думаю не будет проблемой Smile покажи что там не получилось - поправим его сообща. я например под генту свой собственный писал, тот что в репозиториях он меня раздражал.
а насчет стабильности centos - не в том суть, может он и стабильный но там понакрутили лишнего много, опятьже как проблема конфликтов пакетов была несколько лет назад так она до сих пор и осталась. я уж не говорю уже о том чего стоит только кернель перекомпилить там (если у вас не уровень выше среднего то вы попали) и тд.

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#39 15.11.2010 14:46

Разобрался со скриптом. Оказывается, в ubuntu по умолчанию стоит симлинк sh=dash. Стоило поменять с /bin/sh на /bin/bash и все стало работать.
Кстати, сами убунтовцы рассказывают про это.

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones