[OpenSIPS-Devel] Transactional REGISTER processing with 2.1

Răzvan Crainea razvan at opensips.org
Mon Feb 20 03:25:00 EST 2017


Hi, Maxim!

The code you are using now should do what you request. t_newtran() 
returns 0 for retransmissions, therefore for the second message 
(retransmission) that will run the script, t_newtran() will immediately 
absorb the message and return without executing any further instructions.

Best regards,

Răzvan Crainea
OpenSIPS Solutions
www.opensips-solutions.com

On 02/17/2017 09:15 PM, Maxim Sobolev wrote:
> P.S. python_exec("www_authenticate") does not do any magic here, it's 
> just figures out the right domain to use based on some business rules 
> and then calls www_authenticate() with that parameter.
>
> On Fri, Feb 17, 2017 at 11:12 AM, Maxim Sobolev <sobomax at sippysoft.com 
> <mailto:sobomax at sippysoft.com>> wrote:
>
>     Hi guys,
>
>     We are underway to migrate from ancient SER-2.0.0 to more modern
>     OpenSIPS and one of the question that is still in my TODO list is
>     implementing transactional processing of the REGISTER requests. In
>     the old SER we had something along those lines:
>
>     route[3] {
>             # Ensure that all incoming messages contain auth info
>             xlog("L_INFO", "processing %rm received from %si:%sp");
>             if (!t_newtran()) {
>                     sl_send_reply("500", "could not create transaction");
>                     break;
>             };
>             if (!python_exec("www_authenticate")) {
>                     xlog("L_INFO", "challenging %ct");
>                     if (is_avp_set("s:digest_challenge")) {
>     append_to_reply("%$digest_challenge");
>                     };
>                     t_reply("401", "Unauthorized");
>                     break;
>             };
>            [....some more unrelated processing and checks...]
>             xlog("L_INFO", "saving contact %ct into the database");
>             save_noreply("location");
>             if (is_avp_set("s:contact")) {
>                     append_to_reply("%$contact");
>             };
>             t_reply("$code", "$reason");
>     }
>
>     The idea here is to avoid possibly costly DB lookup and other
>     checks on each possible re-transmit. What would be the proper way
>     of doing this with the OpenSIPS 2.1? Or if it's not possible to
>     replicate such scheme, what would be the best way to implement
>     this which to get the change accepted into the OpenSIPS mainline?
>
>     Any ideas, pointers, hints are greatly appreciated. Thanks in advance!
>
>     -Maxim
>
>
>
>
> -- 
> Maksym Sobolyev
> Sippy Software, Inc.
> Internet Telephony (VoIP) Experts
> Tel (Canada): +1-778-783-0474
> Tel (Toll-Free): +1-855-747-7779
> Fax: +1-866-857-6942
> Web: http://www.sippysoft.com
> MSN: sales at sippysoft.com <mailto:sales at sippysoft.com>
> Skype: SippySoft

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/devel/attachments/20170220/029c9d9a/attachment.html>


More information about the Devel mailing list