diff options
author | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-04-28 22:37:45 +0000 |
---|---|---|
committer | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-04-28 22:37:45 +0000 |
commit | ae452e71b9b39296950e8d9607b1e9ef7d3e92bc (patch) | |
tree | 4c6def006b440aef25da38260d489503a53b5ce8 | |
parent | 579d1de083ba8e1e7d34e50eb098f82fe5618367 (diff) |
Merged revisions 259957 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
........
r259957 | mmichelson | 2010-04-28 17:34:15 -0500 (Wed, 28 Apr 2010) | 11 lines
Don't override peer context with domain context.
(closes issue #17040)
Reported by: pprindeville
Patches:
asterisk-1.6-bugid17040.patch uploaded by pprindeville (license 347)
Tested by: pprindeville
Review: https://reviewboard.asterisk.org/r/565/
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@259960 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_sip.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 8e37d98a6..98c216726 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -981,6 +981,7 @@ struct sip_auth { /* realtime flags */ #define SIP_PAGE2_RTCACHEFRIENDS (1 << 0) /*!< GP: Should we keep RT objects in memory for extended time? */ #define SIP_PAGE2_RTAUTOCLEAR (1 << 2) /*!< GP: Should we clean memory from peers after expiry? */ +#define SIP_PAGE2_HAVEPEERCONTEXT (1 << 3) /*< Are we associated with a configured peer context? */ /* Space for addition of other realtime flags in the future */ #define SIP_PAGE2_STATECHANGEQUEUE (1 << 9) /*!< D: Unsent state pending change exists */ @@ -1013,7 +1014,7 @@ struct sip_auth { (SIP_PAGE2_ALLOWSUBSCRIBE | SIP_PAGE2_ALLOWOVERLAP | SIP_PAGE2_IGNORESDPVERSION | \ SIP_PAGE2_VIDEOSUPPORT | SIP_PAGE2_T38SUPPORT | SIP_PAGE2_RFC2833_COMPENSATE | \ SIP_PAGE2_BUGGY_MWI | SIP_PAGE2_TEXTSUPPORT | SIP_PAGE2_UDPTL_DESTINATION | \ - SIP_PAGE2_FAX_DETECT) + SIP_PAGE2_FAX_DETECT | SIP_PAGE2_HAVEPEERCONTEXT) /*@}*/ @@ -11973,8 +11974,9 @@ static int get_destination(struct sip_pvt *p, struct sip_request *oreq) return -2; } } - /* If we have a context defined, overwrite the original context */ - if (!ast_strlen_zero(domain_context)) + /* If we don't have a peer (i.e. we're a guest call), + * overwrite the original context */ + if (!ast_test_flag(&p->flags[1], SIP_PAGE2_HAVEPEERCONTEXT) && !ast_strlen_zero(domain_context)) ast_string_field_set(p, context, domain_context); } @@ -21930,6 +21932,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str ast_copy_string(peer->cid_num, v->value, sizeof(peer->cid_num)); } else if (!strcasecmp(v->name, "context")) { ast_copy_string(peer->context, v->value, sizeof(peer->context)); + ast_set_flag(&peer->flags[1], SIP_PAGE2_HAVEPEERCONTEXT); } else if (!strcasecmp(v->name, "subscribecontext")) { ast_copy_string(peer->subscribecontext, v->value, sizeof(peer->subscribecontext)); } else if (!strcasecmp(v->name, "fromdomain")) { |