Зависание вызова pjsip задерживается, если во время вызова сеть переключается с IPv6 на IPv4 - PullRequest
0 голосов
/ 13 февраля 2019

Я использую PJSIP клиент для обработки VOIP звонков. В настоящее время у меня установлены два сервера.

1 - test1.myvoipserver.com (поддерживается только IPv4)

2 - test2.myvoipserver.com (только поддержка IPv6)

На стороне клиента я проверяю, принадлежит ли ip пользователя семейству IPv4, чем я маршрутизирую вызовСервер test1.myvoipserver.com, который поддерживает IPv4.

Если ip пользователя принадлежит семейству IPv6, я направляю вызов с test2.myvoipserver.com, который поддерживает только IPv6.

Все звонки работают нормально, кроме приведенного ниже сценария.

Сценарий:

Предположим, у пользователя есть два доступных интернет-соединения.

4G - (Только на IPv6)

Wifi - (Только на IPv4)

Пользователь совершил вызов на 4G, вызов был принят Стороной B, и медиапакеты передаются нормально.Во время разговора пользователь начинает перемещаться, где доступен Wifi, его мобильный интернет автоматически переключается на Wifi.В этот момент медиа-пакеты будут потеряны, что понятно.Я хочу отключить текущий вызов и сделать новый вызов снова с сервера IPv4, так как Wi-Fi включен IPv4.

Фактический результат : в Интернете изменяется с IPv6 на IPv4Я принудительно отключаю текущий вызов, но вызов не прерывается немедленно на стороне A и B, он будет отключен через 2 минуты (вероятно, когда pjsip / server отправляет тайм-аут).

Ожидаемый результат : вызов долженнемедленно отключиться как от абонента A, так и от абонента B

Мое понимание : поскольку мой текущий вызов был на сервере IPv6, но новый ip мое устройство получает IPv4 и мой текущий вызовсервер не поддерживает адрес IPv4, поэтому при отправке сообщения Bye от клиента сервер не отправляет OK / ACK.

Примечание. Эта проблема связана с PSTN Calls.

...