[asterisk-commits] russell: branch bbryant/sip-tcptls r73107 - /team/bbryant/sip-tcptls/channels/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Jul 3 10:51:30 CDT 2007
Author: russell
Date: Tue Jul 3 10:51:30 2007
New Revision: 73107
URL: http://svn.digium.com/view/asterisk?view=rev&rev=73107
Log:
Change all the places that expect SIP URIs to begin with sip: to also handle sips:
Modified:
team/bbryant/sip-tcptls/channels/chan_sip.c
Modified: team/bbryant/sip-tcptls/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/bbryant/sip-tcptls/channels/chan_sip.c?view=diff&rev=73107&r1=73106&r2=73107
==============================================================================
--- team/bbryant/sip-tcptls/channels/chan_sip.c (original)
+++ team/bbryant/sip-tcptls/channels/chan_sip.c Tue Jul 3 10:51:30 2007
@@ -7726,7 +7726,7 @@
ast_copy_string(from, get_header(&p->initreq, "From"), sizeof(from));
c = get_in_brackets(from);
- if (strncasecmp(c, "sip:", 4)) {
+ if (strncasecmp(c, "sip:", 4) && strncasecmp(c, "sips:", 5)) {
ast_log(LOG_WARNING, "Huh? Not a SIP header (%s)?\n", c);
return -1;
}
@@ -7735,7 +7735,7 @@
ast_copy_string(to, get_header(&p->initreq, "To"), sizeof(to));
c = get_in_brackets(to);
- if (strncasecmp(c, "sip:", 4)) {
+ if (strncasecmp(c, "sip:", 4) && strncasecmp(c, "sips:", 5)) {
ast_log(LOG_WARNING, "Huh? Not a SIP header (%s)?\n", c);
return -1;
}
@@ -8248,10 +8248,12 @@
ast_copy_string(from, of, sizeof(from));
of = get_in_brackets(from);
ast_string_field_set(p, from, of);
- if (strncasecmp(of, "sip:", 4))
- ast_log(LOG_NOTICE, "From address missing 'sip:', using it anyway\n");
+ if (!strncasecmp(of, "sip:", 4))
+ of += 4;
+ else if (!strncasecmp(of, "sips:", 5))
+ of += 5;
else
- of += 4;
+ ast_log(LOG_NOTICE, "From address missing 'sip(s):', using it anyway\n");
/* Get just the username part */
if ((c = strchr(dest, '@')))
c = NULL;
@@ -8533,9 +8535,16 @@
contact = ast_strdupa(pvt->fullcontact);
/* We have only the part in <brackets> here so we just need to parse a SIP URI.*/
- if (parse_uri(contact, "sip:", &contact, NULL, &host, &pt, NULL))
- ast_log(LOG_NOTICE, "'%s' is not a valid SIP contact (missing sip:) trying to use anyway\n", contact);
- port = !ast_strlen_zero(pt) ? atoi(pt) : STANDARD_SIP_PORT;
+ if (pvt->socket.type == SIP_TRANSPORT_TLS) {
+ if (parse_uri(contact, "sips:", &contact, NULL, &host, &pt, NULL))
+ ast_log(LOG_NOTICE, "'%s' is not a valid SIP contact (missing sips:) trying to use anyway\n", contact);
+ port = !ast_strlen_zero(pt) ? atoi(pt) : STANDARD_TLS_PORT;
+ } else {
+ if (parse_uri(contact, "sip:", &contact, NULL, &host, &pt, NULL))
+ ast_log(LOG_NOTICE, "'%s' is not a valid SIP contact (missing sip:) trying to use anyway\n", contact);
+ port = !ast_strlen_zero(pt) ? atoi(pt) : STANDARD_SIP_PORT;
+ }
+
ast_verbose("--- set_address_from_contact host '%s'\n", host);
/* XXX This could block for a long time XXX */
@@ -8624,9 +8633,15 @@
ast_string_field_build(pvt, our_contact, "<%s>", curi);
/* Make sure it's a SIP URL */
- if (parse_uri(curi, "sip:", &curi, NULL, &host, &pt, NULL))
- ast_log(LOG_NOTICE, "Not a valid SIP contact (missing sip:) trying to use anyway\n");
- port = !ast_strlen_zero(pt) ? atoi(pt) : STANDARD_SIP_PORT;
+ if (pvt->socket.type == SIP_TRANSPORT_TLS) {
+ if (parse_uri(curi, "sips:", &curi, NULL, &host, &pt, NULL))
+ ast_log(LOG_NOTICE, "Not a valid SIP contact (missing sips:) trying to use anyway\n");
+ port = !ast_strlen_zero(pt) ? atoi(pt) : STANDARD_TLS_PORT;
+ } else {
+ if (parse_uri(curi, "sip:", &curi, NULL, &host, &pt, NULL))
+ ast_log(LOG_NOTICE, "Not a valid SIP contact (missing sip:) trying to use anyway\n");
+ port = !ast_strlen_zero(pt) ? atoi(pt) : STANDARD_SIP_PORT;
+ }
oldsin = peer->addr;
if (!ast_test_flag(&peer->flags[0], SIP_NAT_ROUTE)) {
/* XXX This could block for a long time XXX */
@@ -9095,6 +9110,8 @@
if (!strncasecmp(c, "sip:", 4)) {
name = c + 4;
+ } else if (!strncasecmp(c, "sips:", 5)) {
+ name = c + 5;
} else {
name = c;
ast_log(LOG_NOTICE, "Invalid to address: '%s' from %s (missing sip:) trying to use anyway...\n", c, ast_inet_ntoa(sin->sin_addr));
@@ -9282,11 +9299,14 @@
return 0;
exten = get_in_brackets(tmp);
- if (strncasecmp(exten, "sip:", 4)) {
+ if (!strncasecmp(exten, "sip:", 4)) {
+ exten += 4;
+ } else if (!strncasecmp(exten, "sips:", 5)) {
+ exten += 5;
+ } else {
ast_log(LOG_WARNING, "Huh? Not an RDNIS SIP header (%s)?\n", exten);
return -1;
}
- exten += 4;
/* Get diversion-reason param if present */
if ((params = strchr(tmp, ';'))) {
@@ -9345,12 +9365,15 @@
ast_uri_decode(tmp);
uri = get_in_brackets(tmp);
-
- if (strncasecmp(uri, "sip:", 4)) {
+
+ if (!strncasecmp(uri, "sip:", 4)) {
+ uri += 4;
+ } else if (!strncasecmp(uri, "sips:", 5)) {
+ uri += 5;
+ } else {
ast_log(LOG_WARNING, "Huh? Not a SIP header (%s)?\n", uri);
return -1;
}
- uri += 4;
/* Now find the From: caller ID and name */
ast_copy_string(tmpf, get_header(req, "From"), sizeof(tmpf));
@@ -9363,11 +9386,14 @@
}
if (!ast_strlen_zero(from)) {
- if (strncasecmp(from, "sip:", 4)) {
+ if (!strncasecmp(from, "sip:", 4)) {
+ from += 4;
+ } else if (!strncasecmp(from, "sips:", 5)) {
+ from += 5;
+ } else {
ast_log(LOG_WARNING, "Huh? Not a SIP header (%s)?\n", from);
return -1;
}
- from += 4;
if ((a = strchr(from, '@')))
*a++ = '\0';
else
@@ -9521,11 +9547,14 @@
if (pedanticsipchecking)
ast_uri_decode(refer_to);
- if (strncasecmp(refer_to, "sip:", 4)) {
+ if (!strncasecmp(refer_to, "sip:", 4)) {
+ refer_to += 4; /* Skip sip: */
+ } else if (!strncasecmp(refer_to, "sips:", 5)) {
+ refer_to += 5;
+ } else {
ast_log(LOG_WARNING, "Can't transfer to non-sip: URI. (Refer-to: %s)?\n", refer_to);
return -3;
}
- refer_to += 4; /* Skip sip: */
/* Get referred by header if it exists */
p_referred_by = get_header(req, "Referred-By");
@@ -9552,11 +9581,13 @@
}
referred_by_uri = get_in_brackets(h_referred_by);
- if(strncasecmp(referred_by_uri, "sip:", 4)) {
+ if (!strncasecmp(referred_by_uri, "sip:", 4)) {
+ referred_by_uri += 4; /* Skip sip: */
+ } else if (!strncasecmp(referred_by_uri, "sips:", 5)) {
+ referred_by_uri += 5; /* Skip sips: */
+ } else {
ast_log(LOG_WARNING, "Huh? Not a sip: header (Referred-by: %s). Skipping.\n", referred_by_uri);
referred_by_uri = NULL;
- } else {
- referred_by_uri += 4; /* Skip sip: */
}
}
@@ -9671,12 +9702,16 @@
if (pedanticsipchecking)
ast_uri_decode(c);
-
- if (strncasecmp(c, "sip:", 4)) {
+
+ if (!strncasecmp(c, "sip:", 4)) {
+ c += 4;
+ } else if (!strncasecmp(c, "sips:", 5)) {
+ c += 5;
+ } else {
ast_log(LOG_WARNING, "Huh? Not a SIP header in Also: transfer (%s)?\n", c);
return -1;
}
- c += 4;
+
if ((a = strchr(c, ';'))) /* Remove arguments */
*a = '\0';
@@ -10142,6 +10177,8 @@
char *t = uri2;
if (!strncasecmp(t, "sip:", 4))
t+= 4;
+ else if (!strncasecmp(t, "sips:", 5))
+ t += 5;
ast_string_field_set(p, exten, t);
t = strchr(p->exten, '@');
if (t)
@@ -10153,9 +10190,14 @@
ast_string_field_set(p, from, of);
/* ignore all fields but name */
- if (parse_uri(of, "sip:", &of, &dummy, &domain, &dummy, &dummy)) {
- ast_log(LOG_NOTICE, "From address missing 'sip:', using it anyway\n");
- }
+ if (p->socket.type == SIP_TRANSPORT_TLS) {
+ if (parse_uri(of, "sips:", &of, &dummy, &domain, &dummy, &dummy))
+ ast_log(LOG_NOTICE, "From address missing 'sips:', using it anyway\n");
+ } else {
+ if (parse_uri(of, "sip:", &of, &dummy, &domain, &dummy, &dummy))
+ ast_log(LOG_NOTICE, "From address missing 'sip:', using it anyway\n");
+ }
+
if (ast_strlen_zero(of)) {
/* XXX note: the original code considered a missing @host
* as a username-only URI. The SIP RFC (19.1.1) says that
@@ -12662,6 +12704,8 @@
if (ast_test_flag(&p->flags[0], SIP_PROMISCREDIR)) {
if (!strncasecmp(s, "sip:", 4))
s += 4;
+ else if (!strncasecmp(s, "sips:", 5))
+ s += 5;
e = strchr(s, '/');
if (e)
*e = '\0';
@@ -12683,6 +12727,8 @@
if (!strncasecmp(s, "sip:", 4))
s += 4;
+ else if (!strncasecmp(s, "sips:", 5))
+ s += 5;
e = strchr(s, ';'); /* And username ; parameters? */
if (e)
*e = '\0';
@@ -18412,7 +18458,8 @@
ast_log(LOG_ERROR, "Cannot retrieve the 'To' header from the original SIP request!\n");
return 0;
}
- if ((localtmp = strcasestr(tmp, "sip:")) && (localtmp = strchr(localtmp, '@'))) {
+ if ( ( (localtmp = strcasestr(tmp, "sip:")) || (localtmp = strcasestr(tmp, "sips:")) )
+ && (localtmp = strchr(localtmp, '@'))) {
char lhost[80], lport[80];
memset(lhost, 0, sizeof(lhost));
More information about the asterisk-commits
mailing list