Post by Scott GodinThe DISABLE_FLOWMANAGER_IF_NO_NAT_TRAVERSAL was more for testing.
Your scenario should work both with and without this defined. We
should fix the code to make things work without this define enabled.
I looked at the unfiltered logs now (not just the librecon logs) and I
see this from dum just before the warning from recon:
InviteSession.cxx:478 | Incorrect state to provideOffer: UAS_Accepted
The sequence of events:
- participant 1 (p1) calls in
- recon auto-answers and puts p1 on hold
- p2 calls in
- recon auto-answers
- recon tries to un-hold p1
- then the error occurs
Should dum allow the provideOffer call in this state?
I grepped the logs for state transitions and it looks suspicious. As
well as the warnings, I notice that in the case where it fails, some
handle=3 is being created (even though there are only two participants):
INFO | 20140320-143924.083 | InviteSession.cxx:2753 | Transition UAS_Start -> UAS_Offer
INFO | 20140320-143924.104 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Accepted
INFO | 20140320-143924.104 | InviteSession.cxx:2753 | Transition UAS_Offer -> UAS_OfferProvidedAnswer
INFO | 20140320-143924.104 | InviteSession.cxx:2753 | Transition UAS_OfferProvidedAnswer -> UAS_Accepted
INFO | 20140320-143924.104 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Connected
INFO | 20140320-143925.492 | InviteSession.cxx:2753 | Transition UAS_Start -> UAS_Offer
WARNING | 20140320-143925.493 | InviteSession.cxx:478 | Incorrect state to provideOffer: UAS_Accepted
WARNING | 20140320-143925.516 | RemoteParticipant.cxx:634 | RemoteParticipant::unhold exception: DialogUsage::Exception Can't provide an offer @ InviteSession.cxx:479
INFO | 20140320-143925.534 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Accepted
INFO | 20140320-143925.534 | InviteSession.cxx:2753 | Transition UAS_Offer -> UAS_OfferProvidedAnswer
INFO | 20140320-143925.543 | InviteSession.cxx:2753 | Transition UAS_OfferProvidedAnswer -> UAS_Accepted
INFO | 20140320-143925.544 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Connected
INFO | 20140320-143925.555 | InviteSession.cxx:2753 | Transition UAS_Accepted -> InviteSession::Connected
INFO | 20140320-143925.555 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Connected
INFO | 20140320-143931.461 | InviteSession.cxx:2753 | Transition UAS_Start -> UAS_Offer
INFO | 20140320-143931.473 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=3 to state=Accepted
INFO | 20140320-143931.474 | InviteSession.cxx:2753 | Transition UAS_Offer -> UAS_OfferProvidedAnswer
INFO | 20140320-143931.483 | InviteSession.cxx:2753 | Transition UAS_OfferProvidedAnswer -> UAS_Accepted
INFO | 20140320-143931.484 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=3 to state=Connected
INFO | 20140320-143931.495 | InviteSession.cxx:2753 | Transition UAS_Accepted -> InviteSession::Connected
INFO | 20140320-143931.495 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=3 to state=Connected
INFO | 20140320-143940.600 | InviteSession.cxx:2753 | Transition InviteSession::Connected -> InviteSession::Terminated
INFO | 20140320-143940.600 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Terminating
INFO | 20140320-143941.842 | InviteSession.cxx:2753 | Transition InviteSession::Connected -> InviteSession::Terminated
INFO | 20140320-143941.842 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=3 to state=Terminating
WARNING | 20140320-143941.842 | InviteSession.cxx:478 | Incorrect state to provideOffer: UAS_Accepted
WARNING | 20140320-143941.842 | RemoteParticipant.cxx:589 | RemoteParticipant::hold exception: DialogUsage::Exception Can't provide an offer @ InviteSession.cxx:479
INFO | 20140320-143956.105 | InviteSession.cxx:2753 | Transition UAS_Accepted -> InviteSession::Terminated
INFO | 20140320-143956.105 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Terminating
and here is the sequence of transitions where it does work (notice it is in the InviteSession::Connected state when provideOffer is called):
INFO | 20140320-144233.605 | InviteSession.cxx:2753 | Transition UAS_Start -> UAS_Offer
INFO | 20140320-144233.625 | InviteSession.cxx:2753 | Transition UAS_Offer -> UAS_OfferProvidedAnswer
INFO | 20140320-144233.625 | InviteSession.cxx:2753 | Transition UAS_OfferProvidedAnswer -> UAS_Accepted
INFO | 20140320-144233.626 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Connected
INFO | 20140320-144233.626 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Accepted
INFO | 20140320-144233.628 | InviteSession.cxx:2753 | Transition UAS_Accepted -> InviteSession::Connected
INFO | 20140320-144233.628 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Connected
INFO | 20140320-144240.575 | InviteSession.cxx:2753 | Transition UAS_Start -> UAS_Offer
INFO | 20140320-144240.575 | InviteSession.cxx:2753 | Transition InviteSession::Connected -> InviteSession::SentReinvite
INFO | 20140320-144240.585 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Unholding
INFO | 20140320-144240.605 | InviteSession.cxx:2753 | Transition UAS_Offer -> UAS_OfferProvidedAnswer
INFO | 20140320-144240.615 | InviteSession.cxx:2753 | Transition UAS_OfferProvidedAnswer -> UAS_Accepted
INFO | 20140320-144240.615 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Connected
INFO | 20140320-144240.615 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Accepted
INFO | 20140320-144240.618 | InviteSession.cxx:2753 | Transition UAS_Accepted -> InviteSession::Connected
INFO | 20140320-144240.618 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Connected
INFO | 20140320-144241.155 | InviteSession.cxx:2753 | Transition InviteSession::SentReinvite -> InviteSession::Connected
INFO | 20140320-144241.156 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Connected
INFO | 20140320-144250.084 | InviteSession.cxx:2753 | Transition InviteSession::Connected -> InviteSession::Terminated
INFO | 20140320-144250.084 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=1 to state=Terminating
INFO | 20140320-144250.084 | InviteSession.cxx:2753 | Transition InviteSession::Connected -> InviteSession::SentReinvite
INFO | 20140320-144250.085 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Holding
INFO | 20140320-144251.227 | InviteSession.cxx:2753 | Transition InviteSession::SentReinvite -> InviteSession::Connected
INFO | 20140320-144251.228 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Connected
INFO | 20140320-144251.406 | InviteSession.cxx:2753 | Transition InviteSession::Connected -> InviteSession::Terminated
INFO | 20140320-144251.406 | RemoteParticipant.cxx:272 | RemoteParticipant::stateTransition of handle=2 to state=Terminating