if (serverLog.needsLogging(ServerLog.TRACE_MESSAGES)) { responseMessageChannel.logResponse(responseReceived, System .currentTimeMillis(), "before processing"); }
	protected ServerResponseInterface newSIPServerResponse(			SIPResponse responseReceived, MessageChannel responseMessageChannel) {		//	System.out.println("response = " + responseReceived.encode());		// Iterator through all client transactions		Iterator transactionIterator;		// Next transaction in the set		SIPClientTransaction nextTransaction;		// Transaction to handle this request		SIPClientTransaction currentTransaction;		String key = responseReceived.getTransactionId();		currentTransaction = (SIPClientTransaction) clientTransactionTable				.get(key);		if (currentTransaction == null				|| !currentTransaction						.isMessagePartOfTransaction(responseReceived)) {			// Loop through all server transactions			synchronized (clientTransactions) {				transactionIterator = clientTransactions.iterator();				currentTransaction = null;				while (transactionIterator.hasNext()						&& currentTransaction == null) {					nextTransaction = (SIPClientTransaction) transactionIterator							.next();					// If this transaction should handle this request,					if (nextTransaction							.isMessagePartOfTransaction(responseReceived)) {						// Mark this transaction as the one to						// handle this message						currentTransaction = nextTransaction;					}				}			}			// If no transaction exists to handle this message,			if (currentTransaction == null) {				// Pass the message directly to the TU				return super.newSIPServerResponse(responseReceived,						responseMessageChannel);			}		}		// Set ths transaction's encapsulated response interface		// from the superclass		currentTransaction.setResponseInterface(super.newSIPServerResponse(				responseReceived, currentTransaction));		return currentTransaction;	}