Maybe it's because I use modparam("usrloc", "working_mode_preset", "single-instance-sql-write-through")

On 24/08/2020 11:03, johan wrote:
An update.


E_UL_CONTACT_INSERT is only called on the first registration of a user after a reload.

So either I am listening for the wrong event, or there is a bug.

Can you please let me know how to proceed.


route[0]

{

    if (is_method("REGISTER"))
    {
        #TLS
        if (isflagset("SRC_TLS"))
        {
            setbflag("DST_TLS");
        }
        #TLS end TLS
        if (!www_authorize("", "subscriber"))
        {
            www_challenge("", "auth");
            exit;
        }

        if (!save("location")){
            sl_reply_error();
            exit;
        }
        xlog("callid=$ci: Route[0]: REGISTER comes in from fU [$fU], mb [$mb]");
        t_newtran();
        # keep the transaction alive (even if all branches will
        # terminate) until the FR INVITE timer hits (we want to wait
        # for new possible contacts being registered)
        # t_wait_for_new_branches();
        $avp(filter) = "aor=*";
        xlog("callid=$ci: Route[0]: filter avp(filter) [$avp(filter)]");
notify_on_event("E_UL_CONTACT_INSERT",$avp(filter),"fork_call", 7200);
        exit;
    }

}


route[fork_call]
{
    xlog("callid=$ci: Route[fork_call]:user $avp(aor) registered a new contact $avp(uri), injecting\n");
    # take the contact described by the E_UL_CONTACT_INSERT
    # event and inject it as a new branch into the original
    # transaction
    t_inject_branches("event");
}


this is the initial registration : route(fork_call) is called.

.: Route[0]: REGISTER comes in from fU [1000], mb [REGISTER sip:x.y.z.t:5061;transport=TLS SIP/2.0#015#012Via: SIP/2.0/TLS 192.168.68.103:44518;branch=z9hG4bK-524287-1---80382afab4d6c26c;rport#015#012Max-Forwards: 69#015#012Contact: <sip:[email protected]:38277;transport=TLS;rinstance=3dc198bd81077bec>#015#012To: <sip:[email protected]:5061;transport=TLS>#015#012From: <sip:[email protected]:5061;transport=TLS>;tag=e8170278#015#012Call-ID: tEOl9JnRC541B5XfFGVEZw..#015#012CSeq: 2 REGISTER#015#012Expires: 600#015#012Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE#015#012User-Agent: Z 5.3.8 rv2.9.30-mod#015#012Authorization: Digest username="1000",realm="x.y.z.t",nonce="5f4378ec000000014920860cf8b6640d9b11be7ae5a7e089",uri="sip:x.y.z.t:5061;transport=TLS",response="8974c34deb9b6134fc352dc1d696bb4a",cnonce="ca81138c2af7046c6d62bd69b6d7b4c6",nc=00000001,qop=auth,algorithm=MD5#015#012Allow-Events: presence, kpml, talk#015#012Content-Length: 0#015#012#015#012] Aug 24 08:22:38 ns365555 /data/opensips/sbin/opensips[6036]: callid=tEOl9JnRC541B5XfFGVEZw..: Route[0]: filter avp(filter) [aor=*]

Aug 24 08:22:38 ns365555 /data/opensips/sbin/opensips[6036]: ERROR:core:pv_get_callid: cannot parse Call-Id header Aug 24 08:22:38 ns365555 /data/opensips/sbin/opensips[6036]: callid=<null>: Route[fork_call]:user 1000 registered a new contact sip:[email protected]:38277;transport=TLS;rinstance=3dc198bd81077bec, injecting

This is a reregistration: route(fork_call) is not called.

Aug 24 08:24:29 ns365555 /data/opensips/sbin/opensips[6036]: callid=Tt3sdUusdcELwrmcGvxymw..: Route[0]: REGISTER comes in from fU [1000], mb [REGISTER sip:x.y.z.t:5061;transport=TLS SIP/2.0#015#012Via: SIP/2.0/TLS 192.168.68.103:44518;branch=z9hG4bK-524287-1---0b26966ac285f389;rport#015#012Max-Forwards: 69#015#012Contact: <sip:[email protected]:38277;transport=TLS;rinstance=733859e2328994fa>#015#012To: <sip:[email protected]:5061;transport=TLS>#015#012From: <sip:[email protected]:5061;transport=TLS>;tag=97ef5a23#015#012Call-ID: Tt3sdUusdcELwrmcGvxymw..#015#012CSeq: 5 REGISTER#015#012Expires: 600#015#012Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE#015#012User-Agent: Z 5.3.8 rv2.9.30-mod#015#012Authorization: Digest username="1000",realm="x.y.z.t",nonce="5f43795b0000000528fc1b85a5fcc90749efb47a2035d303",uri="sip:x.y.z.t:5061;transport=TLS",response="b6438f3882f04d73a8e2444b9abf8b5f",cnonce="2b94a08747dbea05e5e110b16311fbbd",nc=00000001,qop=auth,algorithm=MD5#015#012Allow-Events: presence, kpml, talk#015#012Content-Length: 0#015#012#015#012] Aug 24 08:24:29 ns365555 /data/opensips/sbin/opensips[6036]: callid=Tt3sdUusdcELwrmcGvxymw..: Route[0]: filter avp(filter) [aor=*]

....


On 21/08/2020 17:31, Liviu Chircu wrote:
On 21.08.2020 18:14, Liviu Chircu wrote:
Let me re-test this feature and come back with an update.

Johan,

I've successfully re-run my tests and both notify_on_event() and async(wait_for_event()) worked just fine.

I only have one idea that may explain why it doesn't work for you:  if you have enabled the "usrloc.use_domain" [1] modparam, then the correct way to subscribe to the usrloc registration event is:

$avp(filter) = "aor=" + $rU + "@" + $rd;

[1]: https://opensips.org/docs/modules/3.2.x/usrloc.html#param_use_domain


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to