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