PJSIP iOS не может разрешить запись SRV в сети IPV6

С новым требованием Apple, чтобы все приложения iOS работали в сети IPV6, у меня есть клиентское приложение VOIP, основанное на PJSIP, которое полностью сломано. Я пытаюсь решить проблемы шаг за шагом. Проблема, которую я хочу решить, - это разрешение SRV.

Я делаю srv разрешение, как это в моем приложении, и оно терпит неудачу (тайм-аут / нет результата). Я мог бы использовать команду dig на моем Mac, который находится в той же сети ipv6, и он правильно разрешает запись SRV, которую я пытаюсь сделать из pjsip. Любые входные данные о правильных API для использования в IPV6 здесь приветствуются.

pj_dns_resolver*  m_pDnsResolver = NULL;

::pj_dns_resolver_create(
                &( m_cachingPool.Get( ).factory ),  // pf (pool factory)
                NULL,                               // name
                0,                                  // options - must be 0
                NULL,                               // timer - unused
                NULL,                               // ioqueue - unused
                &m_pDnsResolver ) );                // p_resolver

// Set the name server to be used ( nameServer is 8.8.8.8 )
const std::string localNameServer = nameServer;

pj_str_t servers[] = { ::pj_str( const_cast< char* >( localNameServer.c_str( ) ) ) };


::pj_dns_resolver_set_ns(
                m_pDnsResolver,
                1,          // count
                servers,
                NULL ) );   // ports

// Resolver start query method ( DomainName cannot be mentioned here. SRV resolution works fine in IPV4 network )

void StartQuery( const std::string& domainName )
{
    PJString name( domainName );

   ::pj_dns_resolver_start_query(
                m_pDnsResolver,             // resolver
                &( name.Get( ) ),           // name
                PJ_DNS_TYPE_SRV,            // type
                0,                          // options - must be 0
                &ResolverCallback,
                this,                       // user_data
                &m_pAsyncQuery )
}

1 ответ

Я работаю над тем же.

Apple попросила всех разработчиков iOS протестировать свои приложения, используя сетевой ресурс Mac. Этот сетевой ресурс использует NAT64:

Основанный на нескольких потоках и собственной документации PJSIP, IPv6 еще не поддерживается PJSIP в среде NAT.

Ref1.: https://trac.pjsip.org/repos/wiki/IPv6

Поддержка IPv6 в pjnath (STUN и ICE)

Быть готовым.

Работа по добавлению поддержки IPv6 в pjnath документирована в билете #422.

Ссылка 2: http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2016-February/018965.html февраль/018965.html

29 января 2016 года в 04:49 Риза Сулистйо написала:

Привет ник,

У нас есть открытый билет для ipv6 в (#419) и (#422). Мы думаем о повышении приоритета одного из тикетов до 2,6, однако пока это не решено.

+

Привет ник,

К сожалению, поддержка DNS (ipv6) в настоящее время отсутствует в нашей дорожной карте, поскольку у нас есть обходной путь. Однако, если вы заинтересованы в его реализации, мы открыты для патча.

+

Но, похоже, для этого есть обходной путь:

Спасибо, Риза,

Разрешив IPv6-адрес сервера и указав его в качестве прокси, я смог заставить pjsip подключаться через ipv6.

Я пытаюсь использовать точно такую ​​же версию библиотеки PJSIP (2.4.5), но я сталкиваюсь с утверждением, когда пытаюсь подключиться к своему серверу таким образом.

Вы можете подключиться таким образом?

Спасибо!

Другие вопросы по тегам