[OpenSIPS-Users] How to process CANCEL in b2b anycast mode?

Denys Pozniak denys.pozniak at gmail.com
Tue Jan 17 08:59:45 UTC 2023


Hello!

I'm trying to build a solution with anycast + b2b.
But I ran into a problem, if the dialogue is in an early state on node1,
and CANCEL arrives on node2, then this request itself is no longer
processed in the context of the b2b (does not jump into the
route[b2b_request] on node2).
If I turn off b2b, then everything works as it should. I attached a part of
the script in the thread.

Maybe I have an error in the logic of the script?

Script snippet from node1:

loadmodule "clusterer.so"
modparam("clusterer", "db_mode", 0)
modparam("clusterer", "my_node_id", 1)
modparam("clusterer", "my_node_info", "cluster_id=1, url=bin:
192.168.56.104:5566, flags=seed")
modparam("clusterer", "neighbor_node_info", "cluster_id=1,node_id=2,url=bin:
192.168.56.105:5566")
modparam("clusterer", "sharing_tag", "anycast1/1=active")
modparam("clusterer", "seed_fallback_interval", 10)

loadmodule "b2b_entities.so"
modparam("b2b_entities", "script_req_route", "b2b_request")
modparam("b2b_entities", "script_reply_route", "b2b_reply")
modparam("b2b_entities", "db_mode", 0)
modparam("b2b_entities", "cluster_id", 1)

loadmodule "b2b_logic.so"
modparam("b2b_logic", "contact_user", 1)
modparam("b2b_logic", "db_mode", 0)

####### Routing Logic ########

route{

        sl_send_reply(100, "Trying-1");
        create_dialog();
        set_dlg_sharing_tag("anycast1");

        if (is_method("INVITE") && !has_totag() ) {
                $du = "sip:192.168.56.106:5080";
                b2b_init_request("top hiding");
                exit;
        }

       #route(b2b_request);
        exit;
}

route[b2b_request] {

        if (is_method("CANCEL")) {
                sl_send_reply(100, "Canceling-1");
                if (t_check_trans()) {
                        b2b_pass_request();

                } else {
                        t_anycast_replicate();
                }

                exit;
        }
}

[root at localhost opensips]# opensips-cli -x mi clusterer_list_cap
{
    "Clusters": [
        {
            "cluster_id": 1,
            "Capabilities": [
                {
                    "name": "b2be-entities-repl",
                    "state": "Ok",
                    "enabled": "yes"
                },
                {
                    "name": "dialog-dlg-repl",
                    "state": "Ok",
                    "enabled": "yes"
                },
                {
                    "name": "tm-repl",
                    "state": "Ok",
                    "enabled": "yes"
                }
            ]
        }
    ]
}

[root at localhost opensips]# opensips -V
version: opensips 3.4.0-dev (x86_64/linux)
flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, Q_MALLOC,
F_MALLOC, HP_MALLOC, DBG_MALLOC, CC_O0, FAST_LOCK-ADAPTIVE_WAIT
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
MAX_URI_SIZE 1024, BUF_SIZE 65535
poll method support: poll, epoll, sigio_rt, select.
git revision: dda7717fa
main.c compiled on 05:45:40 Jan 15 2023 with gcc 4.8.5

--

BR,
Denys Pozniak
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20230117/17bf7c14/attachment-0001.html>


More information about the Users mailing list