[Devel] non-invite server transactions are terminated too fast
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Tue Apr 11 15:08:26 CEST 2006
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.
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.
regards,
bogdan
Klaus Darilion wrote:
> Juha Heinanen wrote:
>
>> Bogdan-Andrei Iancu writes:
>>
>> > check the hint hdr in the 400 reply - it may give you some hints.
>> What I > suspect it that you have a REGISTER retransmission hitting
>> usrloc - it > sees the same CSEQ and deny the registration.
>>
>> this is what is happening. 400 reply has header
>>
>> P-Registrar-Error: Invalid CSeq number
>>
>> but my point was, that re-transmitting register request is perfectly ok
>> and instead of replying with 400, openser should resend the 200 ok until
>> the transaction is terminated (after 32 secods).
>
>
> Thus I suspect the problem is the stateless REGISTER handling. IMO
> this is bad. We often had problems with slow radius backends. This
> caused REGISTER retransmissions which were not detected as
> retransmission by openser and caused multiple radius requests blocking
> all threads.
>
> I remember once there was patch for from Maxim for statefull REGISTER
> handling. But there were also some problems which I can't remember now.
>
> regards
> klaus
More information about the Devel
mailing list