You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
I have a SipDialog whose lastTransaction is a SipServerTransactionImpl
The state is Completed state (because it received a 491 on a RE-INVITE) until a timer sets it to Terminated (according to RFC3261 page 127 I think).
I am trying to send a RE-INVITE before the timer is triggered, so it is blocked in the ReInviteSender at this line
452: ((SIPServerTransaction)SIPDialog.this.lastTransaction).waitForTermination();
When the timer is triggered the state changes to _TERMINATED but if the transport is not reliable (UDP), then the this.terminationSemaphore.release(); will never be called and the ReInviteSender will remains blocked in the semaphore forever
@Override
public void setState(int newState) {
// Set this timer for connection caching
// of incoming connections.
if (newState == TransactionState._TERMINATED && this.isReliable()
&& (!getSIPStack().cacheServerConnections)) {
// Set a time after which the connection
// is closed.
this.collectionTime = TIMER_J;
this.terminationSemaphore.release();
}
super.setState(newState);
}
In fact I'm not sure about the good thing to do in that case for now I replaced the test with
Hi,
I have a SipDialog whose lastTransaction is a SipServerTransactionImpl
The state is Completed state (because it received a 491 on a RE-INVITE) until a timer sets it to Terminated (according to RFC3261 page 127 I think).
I am trying to send a RE-INVITE before the timer is triggered, so it is blocked in the ReInviteSender at this line
452:
((SIPServerTransaction)SIPDialog.this.lastTransaction).waitForTermination();
When the timer is triggered the state changes to _TERMINATED but if the transport is not reliable (UDP), then the
this.terminationSemaphore.release();
will never be called and the ReInviteSender will remains blocked in the semaphore foreverIn fact I'm not sure about the good thing to do in that case for now I replaced the test with
if (newState == TransactionState._TERMINATED && (!isReliable() || (this.isReliable() && (!getSIPStack().cacheServerConnections)))) {
so the release is called also on UDP transport.
The text was updated successfully, but these errors were encountered: