Как удалить sip-id после contacturi в contactheader в pjsip при использовании TLS
Я могу успешно зарегистрироваться на моем sip-сервере, используя pjsip.
Но при отправке регистра из pjsip с использованием транспорта tls, к заголовку контакта добавляется дополнительная строка.
Contact: <sip:8888@192.168.1.14:57336;transport=TLS;ob>;reg-id=1;+sip.instance="<urn:uuid:00000000-0000-0000-0000-0000e922f243>"
Может кто-нибудь сказать, как убрать его из заголовка контакта??
Это мой код
String sipURI = "sip:";
String addTransport = "";
if(enableTLS)
addTransport = ";hide;transport=tls";
String sipid = sipURI + username + "@" + switch_ip + ":" + switch_port;
String registrar = sipURI + switch_ip + ":" + switch_port;
String proxy = sipURI + switch_ip + ":" + switch_port+addTransport;
AccountConfig accCfg = new AccountConfig();
accCfg.setIdUri(sipid);
AuthCredInfoVector creds = accCfg.getSipConfig().getAuthCreds();
creds.clear();
if (username.length() != 0) {
creds.add(new AuthCredInfo("Digest", "*", username, 0, password));
}
StringVector proxies = accCfg.getSipConfig().getProxies();
proxies.clear();
if (proxy.length() != 0) {
proxies.add(proxy);
}
accCfg.getRegConfig().setRegistrarUri(registrar);
accCfg.getRegConfig().setRetryIntervalSec(60);
accCfg.getRegConfig().setTimeoutSec(60);
accCfg.getNatConfig().setIceEnabled(false);
accCfg.getCallConfig().setTimerUse(pjsua_sip_timer_use.PJSUA_SIP_TIMER_INACTIVE); accCfg.getCallConfig().setPrackUse(pjsua_100rel_use.PJSUA_100REL_NOT_USED);
app.addAcc(accCfg);
1 ответ
Прежде всего, вы должны установить порт в TransportConfig
с setPort(switch_port)
, Нет необходимости устанавливать id uri с портом или создавать строку регистратора с портом или писать прокси с портом. Этого достаточно, см. Код ниже.
TransportConfig sipTpConfig = new TransportConfig();
sipTpConfig.setPort(switch_port);
...
String sipid = sipURI + username + "@" + switch_ip;
String registrar = sipURI + switch_ip;
String proxy = sipURI + switch_ip + addTransport;
...
accCfg.getRegConfig().setRegistrarUri("sip:" + SIP_DOMAIN);
accCfg.getSipConfig().getProxies().add("sip:" + SIP_SERVER_HOST + ";hide");
Еще раз, установите свой порт, когда вы настраиваете транспортную конфигурацию. Другое дело, если у вас сконфигурирована SRV-запись на стороне сервера, пусть pjsip автоматически обнаружит доступный порт. Я имею в виду, не используйте жесткий код порта в сигнале регистра и вообще не устанавливайте порт вручную. Используйте этот код вместо этого, чтобы представить правильный заголовок контакта.
accCfg.getNatConfig().setContactRewriteUse(0);
accCfg.getNatConfig().setContactRewriteMethod(0);
accCfg.getNatConfig().setContactUseSrcPort(0);
accCfg.getNatConfig().setViaRewriteUse(0);
SIP_DOMAIN
это ваш домен, switch_ip
, все до "@" и SIP_SERVER_HOST
ваш исходящий прокси