Realtime registration needs pjsip reload or show

Hi all,
I have an issue with PJSIP registration using realtime database (ARA).

So first I set config files to accept realtime database inputs:
in extconfig.conf:

ps_registrations => odbc,asterisk,public.ps_registrations 

in sorcery.conf

[res_pjsip_outbound_registration]
registration=realtime,ps_registrations
registration=config,pjsip.conf,criteria=type=registration

Then I start my asterisk and start adding registrations in ps_registrations. These properly show up in database.

  • First issue was that the registration to trunk was “Rejected”, which I “fixed” by a “core restart now” before I start adding registrations.
  • Now I have a second issue with registration: asterisk only start sending registrations messages after I use “pjsip reload” or (as weird as it seems) “pjsip show registrations”. Once I run one of those commands the registration starts and works properly but it just waits as “Unregistered” if I don’t.

Here are the fields I fill with values I thought would have an impact on registration trigger:

  • id
  • auth_rejection_permanent : no
  • client_uri
  • expiration : 360
  • max_retries: 100
  • outbound_auth
  • retry_interval: 2
  • server_uri
  • transport

I would need the registration to start quite as soon as the registration is added to the database.
Does anyone have any idea why this would not work?

Thanks!

It requires a reload, that’s the way it works. It is not constantly polling the database for new outbound registrations and reconciling state. Something else to remember: the more you tightly couple Asterisk and a database, the more area of risk you introduce.

Hi @jcolp, Thanks for your quick answer.

I was just wondering if that was possible as it works for res_pjsip module (e.g. when adding an endpoint/aor/auth/transport/… to the database, asterisk adds it even if I am not reloading pjsip or polling the database any other way).

Thanks again, it saved me some time.

Transports require a reload. The rest don’t because they have minimal to no state, and their retrieval is instead done based on actual usage. If you place a call into Asterisk then it knows it needs to go and retrieve relevant things from the database for it (endpoint, auth). Same goes for inbound registration.