[reSIProcate-users] dum/ClientRegistration: 200 response to binding removal REGISTER ignored
Hi,
I saw that the
ClientRegistrationHandler::onRemoved() callback wasn't invoked when I remove
all bindings less than 5 seconds after the initial REGISTER was sent
(Resiprocate 1.2).
ClientRegistration::addBinding/removeBinding/removeAll/removeMyBindings
(sip/resiprocate/resip/dum/ClientRegistration.cxx) reuses the first SIP REGISTER
message by changing Contact, CSeq, etc, but does not define a new SIP
transaction, ie the Via branch id is kept the same. When the 200 OK for the
second REGISTER (binding removal) is received, it is ignored because the state
for the transaction is "Completed", an 200 OK having being received before (for
the first REGISTER).
I think that the
scenario works when the two REGISTER are sent more than 5 seconds apart because
the initial transaction times out following Timer K (5secs), so that a new
transaction is created for the second REGISTER, even if the same branch id is
used.
Resiprocate 1.4.1
doesn't seems to solve that issue: I fixed the problem by resetting the branch
id in ClientRegistration::tryModification: anybody encoutered the same issue? I
could not find anything related in the ChangeLog.
Thanks,
Sebastien