} }
TimerTask myTimer = new LingerTimer();  sipStack.timer.schedule(myTimer, SIPTransactionStack.CONNECTION_LINGER_TIME * 1000);  } else {    fireTimer();  } }
        public void run() {            // If the transaction has terminated,            if (myTransaction.isTerminated()) {                // Keep the transaction hanging around in the transaction table                // to catch the incoming ACK retransmission.                // Note that the transaction record is actually removed in                // the connection linger timer.                // Note - BUG report from Antonis Karydas                try {                    this.cancel();                } catch (IllegalStateException ex) {                    if (!sipStack.isAlive())                        return;                }                myTransaction.myTimer = new LingerTimer(this.myTransaction);                // Oneshot timer.                sipStack.timer.schedule(myTimer,                        SIPTransactionStack.CONNECTION_LINGER_TIME * 1000);                //adIf this transaction has not                //terminated,            } else {                // Add to the fire list -- needs to be moved                // outside the synchronized block to prevent                // deadlock.                fireTimer();            }        }