break;
case TimerF:
SipServletResponseImpl resp = null;
synchronized (this) {
if ((_state == TRYING) || (_state == PROCEEDING)) {
resp = getRequest().createTerminatingResponse(408);
resp.setInternalTransportFailure(true);
}
// lets remove this transaction before sending the 408 response
terminate(false);
}
// dispatch after synch block...
if (resp != null) {
popVia(resp);
if (_log.isLoggable(Level.FINE)) {
_log.log(Level.FINE,
"Timer F fired - send 408 Request Timeout " + _state +
" , response = " + resp.toDebugString());
}
final SipServletResponseImpl respToSend = resp;
SipContainerThreadPool.getInstance().execute(new Callable() {
public Object call() throws Exception {
try {
// UOW is set by the replication manager
TransactionManager.getInstance().invokeNextLayer(respToSend);