I am developing  3 functions with the perl module :
 => proxy_registered (REQUEST_ROUTE) : returns the registration status which can be :
     - registered
     - must challenge the registrar proxy
     - not registed
     - too fast: retry later

=> proxy_challenge (REQUEST_ROUTE) :
     - records the contact in the database with a registration flag set to null
     - fixes the expire parameter of the current SIP request

=> proxy_challenge_result (REPLY_ROUTE) :
     - changes or not the registration flag in the database
     - fixes the expire parameter in the database
     - fixes the expire parameter of the current reply

What do you think about it ?
Next week, I will make some tests with these functions.
If its work correctly, I have planned to write a module to improve performance.

Best Regards,

--
Julien Mangeard

On Fri, Jun 20, 2008 at 10:14 AM, Daniel-Constantin Mierla <miconda@gmail.com> wrote:
Hello,


On 06/15/08 13:11, Julien mangeard wrote:
Hi,

I try to use Openser for caching REGISTER requests.
Openser server is between UA and SIP registrar server.

First register :
The UA sends a REGISTER request.
Openser server changes the expire value (with bigger value) and it relays these request to the SIP registrar server.
SIP registrar server responses with a challenge. The Openser relays this challenge to the UA.

The UA reponses to this challenge.
The Openser relays the message to the SIP registrar server.
When the SIP registrar server responses with "200 OK", Openser server add a record in it own location database.

Second register :
The UA send a REGISTER request.
The UA is in the Openser location database and the session is not expire.
Openser responses "200 OK" without forwarding the request to SIP registrar server.

I've make a schema with the expected registration flow : http://img225.imageshack.us/img225/930/registerlj0.png.

What do you think about it ?
Can I do this kind of configuration with existing Openser module ?

is openser acting as registrar as well (for messages 9 and 11)? Practically it is possible, but take care of 200ok replies from registrar, because they can have expires parameter with the value you updated in REGISTER -- you have to restore it back to initial value in order to achieve what you want.

Cheers,
Daniel



Best Regards,

--
Julien Mangeard
06.84.39.57.78

--
http://www.asipto.com