Yup, one way to guarantee the code in the Asterisk base is to spend a few months chasing the bug tracker. I think this feature was simply implemented without taking the users contexts in mind. That's my judgment though but I agree with you it's wrong.
Martin On Sat, Apr 4, 2009 at 11:26 AM, Anthony Plack <t...@plack.net> wrote: >> 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. > > > _______________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users > _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users