Hi Largo,

the replicated REGISTER should not be authenticated by the other server as the request was already authenticate by it. You should do something like this:
   if (src==other server) {
         save();
   } else {
         do auth
         save()
         replicate()
   }

regards,
Bogdan

Largo wrote:

Hi Bogdan,


I got a problem regarding the t_replicate function.
I got an openser server working as a loadbalancer with (DISPATCHER); let´s call it OPENSER-0. He is dispatching to 2 openser servers ; let s call them OPENSER-1 and OPENSER-2.

Everything works fine, but if one analyses the packets and the error logs closely, we observed the following: - Every day there is only one of the servers who is correctly woking , the second one sends always a "404 Not Found". - There are problems by replicating: OPENSER-1 as example, receives a "401 Unauthorized" back from the OPENSER-2
- And in the syslog files , I see this:
/Jul 14 13:58:56 OPENSER-2 /usr/local/sbin/openser[30005]: PG[224] str2valp got string f3415bc4b2e66989142d134d0d33be91 Jul 14 13:58:56 OPENSER-2 /usr/local/sbin/openser[30005]: PG[224] str2valp got string Jul 14 13:58:56 OPENSER-2 /usr/local/sbin/openser[30005]: SRC not 23: Replicating...
/
- Here are scarps from the openser.cfg Files of the 3 servers (only important configs)

--------------------------------------------------------
#OPENSER-0 (DISPATCHER)

listen=192.168.1.21
alias="openser_0.XXX.com"

...

route{
       # log all incomming requests
xlog("L_INFO", "RECV: <$rm> signal from ip <$si> r-uri <$ru> from <$fu> to <$tu> contact <$ct>\n");

       if (!mf_process_maxfwd_header("10")) {
               sl_send_reply("483","Too Many Hops");
               exit;
       };

       if (msg:len >=  2048 ) {
               sl_send_reply("513", "Message too big");
               exit;
       };

       ds_select_dst("2", "0");
       forward(uri:host, uri:port);
}




--------------------------------------------------------
--------------------------------------------------------
#OPENSER-1

listen=0.0.0.0
alias="openser_0.XXX.com"

...

               if (method=="REGISTER") {

# Uncomment this if you want to use digest authentication if (!www_authorize("sip-main.kh.emindgroup.com", "subscriber")) { www_challenge("sip-main.kh.emindgroup.com", "0");
                               exit;
                       };

                       if(!save("location"))
                       {
                               sl_reply_error();
                       }
                       else if( !src_ip==ip-of-openser-server-2 )
                       {
xlog("L_INFO", "SRC not openser-server-4: Replicating...");
                               #if(t_newtran())
                               #{
# xlog("L_INFO", "NewTran: Replicating..."); t_replicate("ip-of-openser-server-2", "5060");
                               #}
                       }
                       else
                       {
                               xlog("L_INFO", "SRC 24: do nothing...");
                       }
                       exit;
               };


--------------------------------------------------------
--------------------------------------------------------
#OPENSER-2

listen=0.0.0.0
alias="openser_0.XXX.com"

...

               if (method=="REGISTER")
               {
# Uncomment this if you want to use digest authenticatio
n
if (!www_authorize("sip-main.kh.emindgroup.com", "subscr
iber")) {
www_challenge("sip-main.kh.emindgroup.com", "0")
;
                               exit;
                       };

                       if(!save("location"))
                       {
                               sl_reply_error();
                       }
                       else if( !src_ip==^ )
                       {
xlog("L_INFO", "SRC not openser-server-1: Replicating...");
                               #if(t_newtran())
                               #{
#xlog("L_INFO", "NewTran: Replicating..."); t_replicate("ip-of-openser-server-1", "5060");
                               #}
                       }
                       else
                       {
                               xlog("L_INFO", "SRC 23: do nothing...");

                       }
                       exit;
               };

               lookup("aliases");
               if (!uri==myself) {
                       append_hf("P-hint: outbound alias\r\n");
                       route(1);
               };

               # native SIP destinations are handled using our USRLOC DB
               if (!lookup("location")) {
                       sl_send_reply("404", "Not Found");
                       exit;
               };
               append_hf("P-hint: usrloc applied\r\n");
       };

       route(1);
}

--------------------------------------------------------------------------

Thanks in advance
Largo !



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

Reply via email to