Как удалить 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 ваш исходящий прокси

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