/** * Create a client transaction from a raw channel. * * @param transaction is the transport channel to encapsulate. */ public MessageChannel createMessageChannel(SIPTransaction transaction) { synchronized (clientTransactions) { // New client transaction to return SIPTransaction returnChannel = createClientTransaction(transaction.getMessageChannel()); clientTransactions.add(0, (SIPClientTransaction) returnChannel); ((SIPClientTransaction) returnChannel).setViaPort(transaction.getViaPort()); ((SIPClientTransaction) returnChannel).setViaHost(transaction.getViaHost()); // Add the transaction timer for the state machine. returnChannel.startTransactionTimer(); return returnChannel; } }