aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 64ae98d1e..196eb80c0 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1087,6 +1087,7 @@ static int global_rtpholdtimeout; /*!< Time out call if no RTP during hold */
static int global_rtpkeepalive; /*!< Send RTP keepalives */
static int global_reg_timeout;
static int global_regattempts_max; /*!< Registration attempts before giving up */
+static int global_shrinkcallerid; /*!< enable or disable shrinking of caller id */
static int global_callcounter; /*!< Enable call counters for all devices. This is currently enabled by setting the peer
call-limit to INT_MAX. When we remove the call-limit from the code, we can make it
with just a boolean flag in the device structure */
@@ -13484,7 +13485,7 @@ static void replace_cid(struct sip_pvt *p, const char *rpid_num, const char *cal
char *tmp = ast_strdupa(rpid_num); /* XXX the copy can be done later */
if (!ast_strlen_zero(calleridname))
ast_string_field_set(p, cid_name, calleridname);
- if (ast_is_shrinkable_phonenumber(tmp))
+ if (global_shrinkcallerid && ast_is_shrinkable_phonenumber(tmp))
ast_shrink_phone_number(tmp);
ast_string_field_set(p, cid_num, tmp);
}
@@ -13602,7 +13603,7 @@ static enum check_auth_result check_peer_ok(struct sip_pvt *p, char *of,
}
if (!ast_strlen_zero(peer->cid_num)) {
char *tmp = ast_strdupa(peer->cid_num);
- if (ast_is_shrinkable_phonenumber(tmp))
+ if (global_shrinkcallerid && ast_is_shrinkable_phonenumber(tmp))
ast_shrink_phone_number(tmp);
ast_string_field_set(p, cid_num, tmp);
}
@@ -13718,7 +13719,7 @@ static enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_requ
<sip:8164444422;phone-context=+1@1.2.3.4:5060;user=phone;tag=SDadkoa01-gK0c3bdb43>
*/
tmp = strsep(&tmp, ";");
- if (ast_is_shrinkable_phonenumber(tmp))
+ if (global_shrinkcallerid && ast_is_shrinkable_phonenumber(tmp))
ast_shrink_phone_number(tmp);
ast_string_field_set(p, cid_num, tmp);
}
@@ -23919,6 +23920,7 @@ static int reload_config(enum channelreloadreason reason)
global_t1min = DEFAULT_T1MIN;
global_qualifyfreq = DEFAULT_QUALIFYFREQ;
global_t38_maxdatagram = -1;
+ global_shrinkcallerid = 1;
sip_cfg.matchexterniplocally = DEFAULT_MATCHEXTERNIPLOCALLY;
@@ -24369,6 +24371,14 @@ static int reload_config(enum channelreloadreason reason)
ast_log(LOG_WARNING, "Invalid pokepeers '%s' at line %d of %s\n", v->value, v->lineno, config);
global_qualify_peers = DEFAULT_QUALIFY_PEERS;
}
+ } else if (!strcasecmp(v->name, "shrinkcallerid")) {
+ if (ast_true(v->value)) {
+ global_shrinkcallerid = 1;
+ } else if (ast_false(v->value)) {
+ global_shrinkcallerid = 0;
+ } else {
+ ast_log(LOG_WARNING, "shrinkcallerid value %s is not valid at line %d.\n", v->value, v->lineno);
+ }
}
}