"TransportError occured on " + transaction);
}
// Treat this like a timeout event. (Suggestion from Christophe).
Object errorObject = transactionErrorEvent.getSource();
Timeout timeout = Timeout.TRANSACTION;
TimeoutEvent ev = null;
if (errorObject instanceof SIPServerTransaction) {
ev = new TimeoutEvent(this, (ServerTransaction) errorObject,
timeout);
} else {
SIPClientTransaction clientTx = (SIPClientTransaction) errorObject;
Hop hop = clientTx.getNextHop();
if ( sipStack.getRouter() instanceof RouterExt ) {
((RouterExt) sipStack.getRouter()).transactionTimeout(hop);
}
ev = new TimeoutEvent(this, (ClientTransaction) errorObject,
timeout);
}
// Handling transport error like timeout
this.handleEvent(ev, (SIPTransaction) errorObject);
} else if (transactionErrorEvent.getErrorID() == SIPTransactionErrorEvent.TIMEOUT_ERROR) {
// This is a timeout event.
Object errorObject = transactionErrorEvent.getSource();
Timeout timeout = Timeout.TRANSACTION;
TimeoutEvent ev = null;
if (errorObject instanceof SIPServerTransaction) {
ev = new TimeoutEvent(this, (ServerTransaction) errorObject,
timeout);
} else {
SIPClientTransaction clientTx = (SIPClientTransaction) errorObject;
Hop hop = clientTx.getNextHop();
if ( sipStack.getRouter() instanceof RouterExt ) {
((RouterExt) sipStack.getRouter()).transactionTimeout(hop);
}
ev = new TimeoutEvent(this, (ClientTransaction) errorObject,
timeout);
}
this.handleEvent(ev, (SIPTransaction) errorObject);
} else if (transactionErrorEvent.getErrorID() == SIPTransactionErrorEvent.TIMEOUT_RETRANSMIT) {
// This is a timeout retransmit event.
// We should never get this if retransmit filter is
// enabled (ie. in that case the stack should handle.
// all retransmits.
Object errorObject = transactionErrorEvent.getSource();
Transaction tx = (Transaction) errorObject;
if (tx.getDialog() != null)
InternalErrorHandler.handleException("Unexpected event !",
this.sipStack.getStackLogger());
Timeout timeout = Timeout.RETRANSMIT;
TimeoutEvent ev = null;
if (errorObject instanceof SIPServerTransaction) {
ev = new TimeoutEvent(this, (ServerTransaction) errorObject,
timeout);
} else {
ev = new TimeoutEvent(this, (ClientTransaction) errorObject,
timeout);
}
this.handleEvent(ev, (SIPTransaction) errorObject);
}
}