diff options
author | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-10-23 19:28:23 +0000 |
---|---|---|
committer | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-10-23 19:28:23 +0000 |
commit | 65c844ece0f509211b060f82cca9e8aaf94a2cfd (patch) | |
tree | ea3ffe011e938a412bb99878eab72c1febd8f338 /channels | |
parent | 9e2cc5b5bb3441da264edf843d50f34c71d34bba (diff) |
put another duplicated block of code in a function.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@46025 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 85f3b9ac9..1d2d33e8a 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -8905,6 +8905,21 @@ static struct ast_variable *copy_vars(struct ast_variable *src) return res; } +/* helper function for check_{user|peer}_ok() */ + +static void replace_cid(struct sip_pvt *p, const char *rpid_num, const char *calleridname) +{ + /* replace callerid if rpid found, and not restricted */ + if (!ast_strlen_zero(rpid_num) && ast_test_flag(&p->flags[0], SIP_TRUSTRPID)) { + 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)) + ast_shrink_phone_number(tmp); + ast_string_field_set(p, cid_num, tmp); + } +} + static enum check_auth_result check_user_ok(struct sip_pvt *p, char *of, struct sip_request *req, int sipmethod, struct sockaddr_in *sin, enum xmittype reliable, @@ -8940,17 +8955,8 @@ static enum check_auth_result check_user_ok(struct sip_pvt *p, char *of, ast_rtp_codec_setpref(p->rtp, &p->prefs); p->autoframing = user->autoframing; } - /* replace callerid if rpid found, and not restricted */ - if (!ast_strlen_zero(rpid_num) && ast_test_flag(&p->flags[0], SIP_TRUSTRPID)) { - char *tmp; - if (*calleridname) - ast_string_field_set(p, cid_name, calleridname); - tmp = ast_strdupa(rpid_num); - if (ast_is_shrinkable_phonenumber(tmp)) - ast_shrink_phone_number(tmp); - ast_string_field_set(p, cid_num, tmp); - } - + + replace_cid(p, rpid_num, calleridname); do_setnat(p, ast_test_flag(&p->flags[0], SIP_NAT_ROUTE) ); if (!(res = check_auth(p, req, user->name, user->secret, user->md5secret, sipmethod, uri2, reliable, ast_test_flag(req, SIP_PKT_IGNORE)))) { @@ -9055,15 +9061,7 @@ static enum check_auth_result check_peer_ok(struct sip_pvt *p, char *of, if (p->sipoptions) peer->sipoptions = p->sipoptions; - /* replace callerid if rpid found, and not restricted */ - if (!ast_strlen_zero(rpid_num) && ast_test_flag(&p->flags[0], SIP_TRUSTRPID)) { - char *tmp = ast_strdupa(rpid_num); - if (*calleridname) - ast_string_field_set(p, cid_name, calleridname); - if (ast_is_shrinkable_phonenumber(tmp)) - ast_shrink_phone_number(tmp); - ast_string_field_set(p, cid_num, tmp); - } + replace_cid(p, rpid_num, calleridname); do_setnat(p, ast_test_flag(&p->flags[0], SIP_NAT_ROUTE)); ast_string_field_set(p, peersecret, peer->secret); |