aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-04-28 22:36:28 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-04-28 22:36:28 +0000
commit8eec384ac2ca9d660b7491cf05bc6aa153e0121a (patch)
tree6b28aaf99273dd1c81297485184f05bf7b1ae049
parent0d1485d493ba3ffe9873ba864c4528c0699b6db8 (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.2@259959 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 4c661682c..a37cca565 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1372,6 +1372,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 */
@@ -1405,7 +1406,8 @@ 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_FAX_DETECT | \
- SIP_PAGE2_UDPTL_DESTINATION | SIP_PAGE2_VIDEOSUPPORT_ALWAYS)
+ SIP_PAGE2_UDPTL_DESTINATION | SIP_PAGE2_VIDEOSUPPORT_ALWAYS | \
+ SIP_PAGE2_HAVEPEERCONTEXT)
/*@}*/
@@ -13380,8 +13382,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);
}
@@ -23850,6 +23853,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
ast_string_field_set(peer, cid_num, v->value);
} else if (!strcasecmp(v->name, "context")) {
ast_string_field_set(peer, context, v->value);
+ ast_set_flag(&peer->flags[1], SIP_PAGE2_HAVEPEERCONTEXT);
} else if (!strcasecmp(v->name, "subscribecontext")) {
ast_string_field_set(peer, subscribecontext, v->value);
} else if (!strcasecmp(v->name, "fromdomain")) {