mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
chan_sip: Optionally supply fromuser/fromdomain in SIP dial string.
Previously you could add [!dnid] to the SIP dial string to alter the To: header. This change allows you to alter the From header as well. SIP dial string extra options now look like this: [![touser[@todomain]][![fromuser][@fromdomain]]] INCOMPATIBLE CHANGE: If you were using an exclamation mark in your To: header, that is no longer possible. ASTERISK-25803 #close Change-Id: I2457e9ba7a89eb1da22084bab5a4d4328e189db7
This commit is contained in:
5
CHANGES
5
CHANGES
@@ -81,6 +81,11 @@ chan_sip
|
||||
* DTLS related configuration options can now be set at a general level.
|
||||
Enabling DTLS support, though, requires enabling it at the user
|
||||
or peer level.
|
||||
* Added the possibility to set the From: header through the the SIP dial
|
||||
string (populating the fromuser/fromdomain fields), complementing the
|
||||
[!dnid] option for the To: header that has existed since 1.6.0 (1d6b192).
|
||||
NOTE: This is again separated by an exclamation mark, so the To: header may
|
||||
not contain one of those.
|
||||
|
||||
chan_pjsip
|
||||
------------------
|
||||
|
@@ -31,6 +31,11 @@ chan_dahdi:
|
||||
ring-ring-ring pattern would exceed the pattern limits and stop
|
||||
Caller-ID detection.
|
||||
|
||||
chan_sip:
|
||||
- The SIP dial string has been extended past the [!dnid] option by another
|
||||
exclamation mark: [!dnid[!fromuri]. An exclamation mark in the To-URI
|
||||
will now mean changes to the From-URI.
|
||||
|
||||
Core:
|
||||
- The REF_DEBUG compiler flag is now used to enable refdebug by default.
|
||||
The setting can be overridden in asterisk.conf by setting refdebug in
|
||||
|
@@ -29680,7 +29680,8 @@ static int sip_devicestate(const char *data)
|
||||
* or SIP/devicename/extension/IPorHost
|
||||
* or SIP/username@domain//IPorHost
|
||||
* and there is an optional [!dnid] argument you can append to alter the
|
||||
* To: header.
|
||||
* To: header. And after that, a [![fromuser][@fromdomain]] argument.
|
||||
* Leave those blank to use the defaults.
|
||||
* \endverbatim
|
||||
*/
|
||||
static struct ast_channel *sip_request_call(const char *type, struct ast_format_cap *cap, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *dest, int *cause)
|
||||
@@ -29752,11 +29753,49 @@ static struct ast_channel *sip_request_call(const char *type, struct ast_format_
|
||||
/* Save the destination, the SIP dial string */
|
||||
ast_copy_string(tmp, dest, sizeof(tmp));
|
||||
|
||||
/* Find DNID and take it away */
|
||||
/* Find optional DNID (SIP to-uri) and From-CLI (SIP from-uri)
|
||||
* and strip it from the dial string:
|
||||
* [!touser[@todomain][![fromuser][@fromdomain]]]
|
||||
* For historical reasons, the touser@todomain is passed as dnid
|
||||
* while fromuser@fromdomain are split immediately. Passing a
|
||||
* todomain without touser will create an invalid SIP message. */
|
||||
dnid = strchr(tmp, '!');
|
||||
if (dnid != NULL) {
|
||||
char *fromuser_and_domain;
|
||||
|
||||
*dnid++ = '\0';
|
||||
ast_string_field_set(p, todnid, dnid);
|
||||
if ((fromuser_and_domain = strchr(dnid, '!'))) {
|
||||
char *forward_compat;
|
||||
char *fromdomain;
|
||||
|
||||
*fromuser_and_domain++ = '\0';
|
||||
|
||||
/* Cut it at a trailing NUL or trailing '!' for
|
||||
* forward compatibility with extra arguments
|
||||
* in the future. */
|
||||
if ((forward_compat = strchr(fromuser_and_domain, '!'))) {
|
||||
/* Ignore the rest.. */
|
||||
*forward_compat = '\0';
|
||||
}
|
||||
|
||||
if ((fromdomain = strchr(fromuser_and_domain, '@'))) {
|
||||
*fromdomain++ = '\0';
|
||||
/* Set fromdomain. */
|
||||
if (!ast_strlen_zero(fromdomain)) {
|
||||
ast_string_field_set(p, fromdomain, fromdomain);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set fromuser. */
|
||||
if (!ast_strlen_zero(fromuser_and_domain)) {
|
||||
ast_string_field_set(p, fromuser, fromuser_and_domain);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set DNID (touser/todomain). */
|
||||
if (!ast_strlen_zero(dnid)) {
|
||||
ast_string_field_set(p, todnid, dnid);
|
||||
}
|
||||
}
|
||||
|
||||
/* Divvy up the items separated by slashes */
|
||||
|
@@ -24,6 +24,9 @@
|
||||
; SIP/devicename/extension
|
||||
; SIP/devicename/extension/IPorHost
|
||||
; SIP/username@domain//IPorHost
|
||||
; And to alter the To: or the From: header, you can additionally append
|
||||
; the following to any of the above strings:
|
||||
; [![touser[@todomain]][![fromuser][@fromdomain]]]
|
||||
;
|
||||
;
|
||||
; Devicename
|
||||
@@ -57,6 +60,14 @@
|
||||
;
|
||||
; SIP/sales@mysipproxy!sales@edvina.net
|
||||
;
|
||||
; (Specifying only @todomain without touser will create an invalid SIP
|
||||
; request.)
|
||||
;
|
||||
; Similarly, you can specify the From header as well, after a second
|
||||
; exclamation mark:
|
||||
;
|
||||
; SIP/customer@mysipproxy!!customersupport@wearespindle.com
|
||||
;
|
||||
; A new feature for 1.8 allows one to specify a host or IP address to use
|
||||
; when routing the call. This is typically used in tandem with func_srv if
|
||||
; multiple methods of reaching the same domain exist. The host or IP address
|
||||
|
Reference in New Issue
Block a user