Skip to content
This repository has been archived by the owner on Jan 14, 2020. It is now read-only.

Commit

Permalink
chan_sip: Add SIPURIPHONECONTEXT channel variable for Request TEL URIs
Browse files Browse the repository at this point in the history
This patch is a continuation of https://reviewboard.asterisk.org/r/3349/,
committed in r412303.

It resolves a finding oej had that the phone-context be available in a
channel variable separate from SIPDOMAIN. This patch adds that variable as
SIPURIPHONECONTEXT. It also allows a local number (or global number specified
in the TEL URI) to be used to look up as a peer.

(issue ASTERISK-17179)

Review: https://reviewboard.asterisk.org/r/3349/


git-svn-id: http://svn.asterisk.org/svn/asterisk/trunk@412467 f38db490-d61c-443f-a65b-d21fe96a405b
  • Loading branch information
matt-jordan committed Apr 17, 2014
1 parent ee224ec commit 45c06f2
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ chan_sip
-------------------------
* TEL URI support for inbound INVITE requests has been added. chan_sip will
now handle TEL schemes in the Request and From URIs. The phone-context in
the Request URI will be stored in the TELPHONECONTEXT channel variable on
the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on
the inbound channel.

Debugging
Expand Down
13 changes: 10 additions & 3 deletions channels/chan_sip.c
Original file line number Diff line number Diff line change
Expand Up @@ -8249,6 +8249,9 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit
if (!ast_strlen_zero(i->domain)) {
pbx_builtin_setvar_helper(tmp, "SIPDOMAIN", i->domain);
}
if (!ast_strlen_zero(i->tel_phone_context)) {
pbx_builtin_setvar_helper(tmp, "SIPURIPHONECONTEXT", i->tel_phone_context);
}
if (!ast_strlen_zero(i->callid)) {
pbx_builtin_setvar_helper(tmp, "SIPCALLID", i->callid);
}
Expand Down Expand Up @@ -17694,6 +17697,12 @@ static enum sip_get_dest_result get_destination(struct sip_pvt *p, struct sip_re

extract_host_from_hostport(&domain);

if (strncasecmp(get_in_brackets(tmp), "tel:", 4)) {
ast_string_field_set(p, domain, domain);
} else {
ast_string_field_set(p, tel_phone_context, domain);
}

if (ast_strlen_zero(uri)) {
/*
* Either there really was no extension found or the request
Expand All @@ -17703,8 +17712,6 @@ static enum sip_get_dest_result get_destination(struct sip_pvt *p, struct sip_re
uri = "s";
}

ast_string_field_set(p, domain, domain);

/* Now find the From: caller ID and name */
/* XXX Why is this done in get_destination? Isn't it already done?
Needs to be checked
Expand Down Expand Up @@ -18358,7 +18365,7 @@ static enum check_auth_result check_peer_ok(struct sip_pvt *p, char *of,
if (!peer) {
char *uri_tmp, *callback = NULL, *dummy;
uri_tmp = ast_strdupa(uri2);
parse_uri(uri_tmp, "sip:,sips:", &callback, &dummy, &dummy, &dummy);
parse_uri(uri_tmp, "sip:,sips:,tel:", &callback, &dummy, &dummy, &dummy);
if (!ast_strlen_zero(callback) && (peer = sip_find_peer_by_ip_and_exten(&p->recv, callback, p->socket.type))) {
; /* found, fall through */
} else {
Expand Down
1 change: 1 addition & 0 deletions channels/sip/include/sip.h
Original file line number Diff line number Diff line change
Expand Up @@ -1038,6 +1038,7 @@ struct sip_pvt {
AST_STRING_FIELD(last_presence_subtype); /*!< The last presence subtype sent for a subscription. */
AST_STRING_FIELD(last_presence_message); /*!< The last presence message for a subscription */
AST_STRING_FIELD(msg_body); /*!< Text for a MESSAGE body */
AST_STRING_FIELD(tel_phone_context); /*!< The phone-context portion of a TEL URI */
);
char via[128]; /*!< Via: header */
int maxforwards; /*!< SIP Loop prevention */
Expand Down

0 comments on commit 45c06f2

Please sign in to comment.