Klaus Darilion wrote:

Bogdan-Andrei Iancu wrote:

Hi,

REGISTER retransmission is a little bit tricky.

If you have a stateless configuration, you will not be able to detect retransmissions, so each request will be fully processed as a new one. Since we added the cseq checking in register module (according to rfc), the retransmissions will be reported as errors due invalid cseq no. Solution: relax the register checking to accept equal cseq. Disadvantage: you still process each register even if it;s retransmission - partial solution: try sending an 100 trying once you received a REGISTER.


This means that the client will wait for the response, which may never arrive e.g. when it was dropped.

even if a provisional reply is received, any UAC must generate an internal timeout if no final response was received.

How long will the client wait?

I guess depends of the client

will it use a new cseq when it tries again?

not sure, but I would say it should increase the cseq as it's a new request - first was completed with timeout.


Also you my go for a statefull approach: you will catch all retransmissions, but it might have a negative impact on your memory usage. Use t_newtran() before save in order to create transactions and absorb retransmissions.


Does this really work?

try placing:
   t_newtran();
   t_release();

before save("location") in your script. It will consume all retransmissions.

As far as I remember I tried this a year ago and there where some problems. This is why Maxim made the patch.

I do not remember Maxim's patch.

regards,
bogdan

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

Reply via email to