Работа поля
Модераторы: Admins, Модераторы
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
Работа поля
Коллеги, доброго времени суток.
Использую CentOS 7 и Asterisk 1.8.32.3 без GUI.
Вход работает, а вот исход отваливается
Использую CentOS 7 и Asterisk 1.8.32.3 без GUI.
Вход работает, а вот исход отваливается
Последний раз редактировалось megatron_dam 01 авг 2017, 17:46, всего редактировалось 3 раза.
Не зачем съезжать. Зайти и если надо, то попробовать поправить собственными ручками.
В chan_sip.c есть функция initreqprep, собственно в ней то и обрабатывается usereqphone и там же добавляют user=phone.
В функции есть коммент:
В chan_sip.c есть функция initreqprep, собственно в ней то и обрабатывается usereqphone и там же добавляют user=phone.
В функции есть коммент:
Код: Выделить всё
const char *s = p->username; /* being a string field, cannot be NULL */
/* Test p->username against allowed characters in AST_DIGIT_ANY
If it matches the allowed characters list, then sipuser = ";user=phone"
If not, then sipuser = ""
*/
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
Спасибо за совет.
Просто не особо очевидно как его безболезненно поправить и можно ли это вообще делать(
phone
Просто не особо очевидно как его безболезненно поправить и можно ли это вообще делать(
phone
Последний раз редактировалось megatron_dam 01 авг 2017, 17:41, всего редактировалось 2 раза.
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
Пир без регистрации, коллега([url=http://asteriskforum.ru/viewtopic.php?p=83358#83358][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] xelas @ Пт Июл 29, 2016 14:39 писал(а):Может быть надо было исправить не имя пира а fromuser/defaultuser?
Только по IP.
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
[url=http://asteriskforum.ru/viewtopic.php?p=83360#83360][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] xelas @ Пт Июл 29, 2016 14:59 писал(а):И что?
fromuser прописывается в настройках пира и к регистрации отношения не имеет.
Added after 3 minutes:
А при ближайшем рассмотрении находим еще и такую опцию в конфигурации пира:usereqphone = yes|no : Indicates whether to add a ";user=phone" to the URI. Default no.
Последний раз редактировалось megatron_dam 01 авг 2017, 17:35, всего редактировалось 1 раз.
Кроме как поправить руками код -- никак.
Судя по форуму и баг трекеру Астериска эта проблема возникает с определенной периодичностью во всех ветках и только с определенным софтом на конце оператора.
Так что, либо менять оператора, либо одно из двух.
В любом случае, для версии 1.8 вы не найдете решения. EOL.
https://issues.asterisk.org/jira/browse ... 3Dphone%22
https://community.asterisk.org/t/sip-us ... er/44177/3
Судя по форуму и баг трекеру Астериска эта проблема возникает с определенной периодичностью во всех ветках и только с определенным софтом на конце оператора.
Так что, либо менять оператора, либо одно из двух.
В любом случае, для версии 1.8 вы не найдете решения. EOL.
https://issues.asterisk.org/jira/browse ... 3Dphone%22
https://community.asterisk.org/t/sip-us ... er/44177/3
С чего вы решили, что в p->username содержится название пира ? Мне вот так не кажется. Сделайте print содержимого этой переменной и тогда точно поймете что там.megatron_dam писал(а):в случае, если пир состоит из цифр
Ну а почему нет то ? Если есть исходный код, то его можно правитьmegatron_dam писал(а):можно ли это вообще делать(

делаете виртуальную машину, на ней все обкатываете, а затем переносите на боевую систему. Либо ищите человека, который за денежку поправит за вас.megatron_dam писал(а):как его безболезненно поправить
+1xelas писал(а):Так что, либо менять оператора, либо одно из двух.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
Нашел вот это, коллеги!
Копи-паст оригинала.
Копи-паст оригинала.
Последний раз редактировалось megatron_dam 01 авг 2017, 17:36, всего редактировалось 1 раз.
xelas прав и патч для 11-ой в прямую не подойдет для 1.8, т.к. там немного не так.
awsswa, зачем переходить, если легко можно 1.8 допилить.
megatron_dam, вы выложили результат diff
Для 1.8 будет:
Всего то надо добавить %s и urioptions.
Ну или вообще, кардинальный подход:

awsswa, зачем переходить, если легко можно 1.8 допилить.
megatron_dam, вы выложили результат diff
Для 1.8 будет:
Код: Выделить всё
[work:/usr/ports/net/asterisk/work/asterisk-1.8.23.1/channels/] diff -uN chan_sip.c.orig chan_sip.c
Код: Выделить всё
--- chan_sip.c.orig 2013-08-27 23:23:25.000000000 +0400
+++ chan_sip.c 2016-07-31 09:46:52.000000000 +0300
@@ -12527,9 +12527,9 @@
ourport = (p->fromdomainport) ? p->fromdomainport : ast_sockaddr_port(&p->ourip);
if (!sip_standard_port(p->socket.type, ourport)) {
- snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d>;tag=%s", n, tmp_l, d, ourport, p->tag);
+ snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d%s>;tag=%s", n, tmp_l, d, ourport, urioptions, p->tag);
} else {
- snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s>;tag=%s", n, tmp_l, d, p->tag);
+ snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s%s>;tag=%s", n, tmp_l, d, urioptions, p->tag);
}
if (!ast_strlen_zero(explicit_uri)) {
Ну или вообще, кардинальный подход:
Код: Выделить всё
--- chan_sip.c.orig 2013-08-27 23:23:25.000000000 +0400
+++ chan_sip.c 2016-07-31 09:46:52.000000000 +0300
@@ -12527,9 +12527,9 @@
ourport = (p->fromdomainport) ? p->fromdomainport : ast_sockaddr_port(&p->ourip);
if (!sip_standard_port(p->socket.type, ourport)) {
- snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d>;tag=%s", n, tmp_l, d, ourport, p->tag);
+ snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d;user=phone>;tag=%s", n, tmp_l, d, ourport, p->tag);
} else {
- snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s>;tag=%s", n, tmp_l, d, p->tag);
+ snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s;user=phone>;tag=%s", n, tmp_l, d, p->tag);
}
if (!ast_strlen_zero(explicit_uri)) {

bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
Коллеги, всем большое спасибо.
То ли я что-т не так делаю, то ли еще что.
То ли я что-т не так делаю, то ли еще что.
Последний раз редактировалось megatron_dam 01 авг 2017, 17:37, всего редактировалось 1 раз.
Ну а asterisk то вы пересобрали после этого ?megatron_dam писал(а):Изменил файлик
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
Применил патч, пересобрал, перезапустил.
Проверяю:
А точнее все же это вы что-то делаете не так.
Проверяю:
Что я делаю не так ?INVITE sip:123@127.0.0.1 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:5060;branch=z9hG4bK3b21679d;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@test.mega-net.ru;user=phone>;tag=as341eb14a
To: <sip:123@127.0.0.1>
Contact: <sip:asterisk@127.0.0.1:5060>
Call-ID: 43fd9cca0968754f6ad68f2a228ecae4@test.mega-net.ru
CSeq: 102 INVITE
User-Agent: test.mega-net.ru
Date: Tue, 02 Aug 2016 06:12:50 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 259

bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
-
- Сообщения: 64
- Зарегистрирован: 19 фев 2015, 15:47
Спасибо за фидбэк. Попробую еще раз. Что-то "паранормал" какой-то(
А вы какой "вариант" использовали? Тот, что радикальнее?))
Added after 1 hours:
Все завелось. В заголовках инвайтов необходимые поля помечены нужными "тэгами".
Только не понятно, почему сразу не завелось...только после второй пересборки(
Надеюсь, что наши происки будут кому-то еще полезными!
А вы какой "вариант" использовали? Тот, что радикальнее?))
Added after 1 hours:
Всем большое спасибо за посильную помощь, коллеги.[url=http://asteriskforum.ru/viewtopic.php?p=83373#83373][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] megatron_dam @ Вт Авг 02, 2016 10:06 писал(а):Спасибо за фидбэк. Попробую еще раз. Что-то "паранормал" какой-то(
А вы какой "вариант" использовали? Тот, что радикальнее?))
Все завелось. В заголовках инвайтов необходимые поля помечены нужными "тэгами".
Только не понятно, почему сразу не завелось...только после второй пересборки(
Надеюсь, что наши происки будут кому-то еще полезными!
Я использовал тот вариант, который вы указали в этом своем посте, т.е. радикальный. Если бы вы делали менее радикальный, то и я бы тоже тестил его же. Иначе какой смысл пробовать разные варианты и сравнивать полученные результаты ?megatron_dam писал(а):А вы какой "вариант" использовали?
Это можно осознать только в одном случае: в точности воспроизведя порядок совершенных действий и результатов проверок после этих действий.megatron_dam писал(а):не понятно, почему сразу не завелось...
Например самое простое для проверки это смотреть изменился ли размер файла модуля chan_sip.so после ваших действий по пересборке или нет. Если не изменился, то вывод сразу очевиден и дальнейшие тесты бессмысленны.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.
Патч для 11.23:
Код: Выделить всё
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index c35091f..2362617 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13921,9 +13921,9 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmetho
ourport = (p->fromdomainport && (p->fromdomainport != STANDARD_SIP_PORT)) ? p->fromdomainport : ast_sockaddr_port(&p->ourip);
if (!sip_standard_port(p->socket.type, ourport)) {
- ret = ast_str_set(&from, 0, "<sip:%s@%s:%d>;tag=%s", tmp_l, d, ourport, p->tag);
+ ret = ast_str_set(&from, 0, "<sip:%s@%s:%d%s>;tag=%s", tmp_l, d, ourport, urioptions, p->tag);
} else {
- ret = ast_str_set(&from, 0, "<sip:%s@%s>;tag=%s", tmp_l, d, p->tag);
+ ret = ast_str_set(&from, 0, "<sip:%s@%s%s>;tag=%s", tmp_l, d, urioptions, p->tag);
}
if (ret == AST_DYNSTR_BUILD_FAILED) {
/* We don't have an escape path from here... */
dCAP #2147