使用 TLS 时,如何在 pjsip 中的联系人头中去除 contacturi 之后的 sip-id



我能够使用 pjsip 成功注册到我的 sip 服务器。
但是当使用 tls 传输从 pjsip 发送寄存器时,碰巧有额外的字符串附加到联系人标头。

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);

首先,您必须使用setPort(switch_port)TransportConfig设置端口。无需使用端口设置 uri 的 id,也无需使用端口创建注册器字符串或使用端口写入代理。这就足够了,请参阅下面的代码。

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是您的出站代理。

最新更新