]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_outbound_registration: generate correct Contact URI for TLS 02/2802/2
authorSebastian Damm <damm@sipgate.de>
Tue, 10 May 2016 15:19:48 +0000 (17:19 +0200)
committerJoshua Colp <jcolp@digium.com>
Thu, 12 May 2016 10:34:24 +0000 (05:34 -0500)
There are two types of SIP URIs indicating a secure transport:
* sips:user@example.org
* sip:user@example.org;transport=tls

When using a sips URI, Asterisk checks incoming INVITEs and answers from
the other side for sips URIs, and rejects the packet if there are only
sip URIs. So Asterisk should only generate a sips Contact URI if the
other side supports it.

This patch makes Asterisk generate either a sip or sips Contact URI
depending on the format of the server URI.

If you want a sip URI, use:
server_uri=sip:example.org\;transport=tls

If you want a sips URI, use:
server_uri=sips:example.org

ASTERISK-25990 #close
Reported-by: Sebastian Damm
Change-Id: I5ae57d6531ce940b5fc64d5cd2673e60db0f9ba2

res/res_pjsip_outbound_registration.c

index 8a40cce2334b284545ab48f1266b1cd8993c6225..1ae3522d887a78780cdcb998eee190a49bedd2de 100644 (file)
@@ -1096,7 +1096,7 @@ static int sip_dialog_create_contact(pj_pool_t *pool, pj_str_t *contact, const c
        contact->ptr = pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
        contact->slen = pj_ansi_snprintf(contact->ptr, PJSIP_MAX_URL_SIZE,
                "<%s:%s@%s%.*s%s:%d%s%s%s%s>",
-               (pjsip_transport_get_flag_from_type(type) & PJSIP_TRANSPORT_SECURE) ? "sips" : "sip",
+               ((pjsip_transport_get_flag_from_type(type) & PJSIP_TRANSPORT_SECURE) && PJSIP_URI_SCHEME_IS_SIPS(uri)) ? "sips" : "sip",
                user,
                (type & PJSIP_TRANSPORT_IPV6) ? "[" : "",
                (int)local_addr.slen,