[asterisk-users] SIP Context Confusion

Martin asterisklist at callthem.info
Sat Apr 4 11:53:02 CDT 2009


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 <tony at 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
>



More information about the asterisk-users mailing list