[asterisk-dev] PJSIP endpoints created via ARI do not transfer some values into Realtime Database

Joshua Colp jcolp at digium.com
Wed Nov 8 06:21:26 CST 2017


On Wed, Nov 8, 2017, at 08:13 AM, Floimair Florian wrote:
> Hi guys!
> 
> In my lab environment I ran into an issue with PJSIP endpoints created
> via ARI with a realtime database as backend.
> I'm using a MySQL database in my lab setup.
> I noticed that some of the values of the endpoint object do not find
> their way into the database.
> 
> When creating the endpoint (and auth and aor before that) using cURL I
> get the following JSON reply indicating that the attributes I set in the
> request are successfully accepted by Asterisk:
> 
> curl -X PUT -H "Content-Type: application/json" -u asterisk:asterisk -d
> '{"fields": [{"attribute": "send_pai", "value": "yes"}, {"attribute":
> "send_rpid", "value": "yes"}, { "attribute": "allow", "value":
> "!all,g722,ulaw,alaw,h264"}, {"attribute": "ice_support", "value":
> "yes"}, {"attribute": "force_rport", "value": "yes"}, {"attribute":
> "rewrite_contact", "value": "yes"}, {"attribute": "rtp_symmetric",
> "value": "yes"}, {"attribute": "context", "value": "default" },
> {"attribute": "auth", "value": "snom820" }, {"attribute": "aors",
> "value": "snom820"} ] }'
> http://localhost:8088/ari/asterisk/config/dynamic/res_pjsip/endpoint/snom820
> 
> I get the following JSON response (shortened to just show the attributes
> set in the request):
> 
> [...,
> {"attribute":"send_rpid","value":"true"},
> {"attribute":"aors","value":"snom820"},
> {"attribute":"context","value":"default"},
> {"attribute":"rtp_symmetric","value":"true"},
> {"attribute":"force_rport","value":"true"},
> {"attribute":"ice_support","value":"true,
> {"attribute":"allow","value":"(g722|ulaw|alaw|h264)"},
> {"attribute":"rewrite_contact","value":"true"},
> {"attribute":"auth","value":"snom820,
> {"attribute":"send_pai","value":"true"},...]
> 
> So at first glance everything seems to be OK.
> However when looking at the database everything that is not a string
> (namely all yes/no ENUMs) comes up empty, which in turn causes Asterisk
> to use the default values for these settings.
> 
> So the only rows correctly set in the dabase in case of the above values
> are aors ,context, auth & allow. All the other rows come up empty.
> 
> Verifying in the Asterisk CLI shows these values (again shortened):
> 
> asterisk*CLI> pjsip show endpoint snom820
> 
> Endpoint:  <Endpoint/CID.....................................> 
> <State.....>  <Channels.>
>     I/OAuth: 
>     <AuthId/UserName...........................................................>
>         Aor:  <Aor............................................> 
>         <MaxContact>
>       Contact:  <Aor/ContactUri..........................> <Hash....>
>       <Status> <RTT(ms)..>
>   Transport:  <TransportId........>  <Type>  <cos>  <tos> 
>   <BindAddress..................>
>    Identify: 
>    <Identify/Endpoint.........................................................>
>         Match:  <criteria.........................>
>     Channel:  <ChannelId......................................> 
>     <State.....>  <Time.....>
>         Exten: <DialedExten...........>  CLCID: <ConnectedLineCID.......>
> ==========================================================================================
> 
> Endpoint:  snom820/unknown                                     
> Unavailable   0 of inf
>      InAuth:  snom820/snom820
>         Aor:  snom820                                           10
> 
> 
> ParameterName                      : ParameterValue
> ==========================================================
> allow                              : (g722|ulaw|alaw|h264)
> aors                               : snom820
> auth                               : snom820
> context                            : default
> force_rport                        : true
> ice_support                        : false
> rewrite_contact                    : false
> rtp_symmetric                      : false
> send_pai                           : false
> send_rpid                          : false
> 
> After correlating these empty values in the database with their default
> setting in the Asterisk code, I saw that only force_rport defaults to
> true.
> This leads me to believe that Asterisk at runtime takes the default
> values for empty rows in the database as they do not reflect the values
> that were in the JSON response.
> 
> Finally, this leads me to my question:
> 
> Is this a bug, or is there something wrong in my method of creating these
> endpoints and the assumption that they should be properly transferred to
> the database?
> 
> If it is a bug I will file an issue, If it is not can someone please
> point out what is wrong here.

I don't think anyone has used this with a realtime database like that. I
only know of people using astdb itself. I'd consider it a bug though,
probably in the realtime interaction.

-- 
Joshua Colp
Digium, Inc. | Senior Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - US
Check us out at: www.digium.com & www.asterisk.org



More information about the asterisk-dev mailing list