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
_______________________________________________
resiprocate-users mailing list