[asterisk-users] SIP Context Confusion
Anthony Plack
tony at plack.net
Sat Apr 4 11:26:57 CDT 2009
> It took me a while to understand what you were saying ... more clarity
> to your emails!
>
I was trying to be clear and complete. So many times if you forget to mention 1 thing or another, or are too long, you get non-helpful comments back. But I will try harder. Right now Asterisk is as clear as mud with regards to this issue, so I am trying to insert some clarity into the process. Your comments do help with my objective, thank you.
> I see where the code says " If we have a context defined, overwrite
> the original context" and after consideration
> I agree with you ... the only problem is that even if you don't define
> the "context=blah" for the user... that user
> inherits the "default" context
>
No, the default is only used if a peer context is not defined. If a peer is defined, it will use the peer context (if set). Otherwise if the domain context is used, it overrides everything.
> However since you did find it in the source code I'm sure you can fix
> it for yourself. Just check against the "default_context"
> and do not overwrite the user's context if it's default.
>
Done for my code, but I was not sure if me maintaining a separate version of Asterisk was correct for the community. I would rather see clarity from the source, but I wished to discuss it on the user channel first to make sure I was not missing something in everyone's configuration.
> Or add another flag to the user's definition for example
> is_context_set that would be NULL if no context keyword is processed
> from the sip.conf etc.
> That is easier to check instead of comparing against default_context
>
Easier would be to say (pseudo code):
if (sip_pvt->context == null) {
if (sip_pvt->domain->context == null) {
if (default_context == null) {
/* Set the context to whatever is specified in sip.conf */
sip_pvt->context == default_context;
} else {
/* If all else has failed */
sip_pvt->context = 'default';
}
} else {
/* use the domain */
sip_pvt->context = sip_pvt->domain->context;
}
} /* assume that the context in the peer definition is correct. */
Hopefully that helps clarify. I am thinking I should just open a bug issue and post the code, but I didn't want to do that if there was some reason to have this rather odd sequence of default, peer, domain.
More information about the asterisk-users
mailing list