public void trackTransaction(final SipClientTransaction ct) {
   m_log.debug("Tracking transaction...");
   final SipMessage message = ct.getRequest();
   final String key = message.getTransactionKey(); // getTransactionKey(message);
   this.m_transactions.put(key, ct);
   ct.addListener(this);
 }
 public SipClientTransaction getClientTransaction(final SipMessage message) {
   m_log.debug("Accessing client transaction...");
   final String key = message.getTransactionKey(); // getTransactionKey(message);
   m_log.debug("Using key: " + key);
   if (StringUtils.isBlank(key)) {
     m_log.error("Blank key for message: " + message);
     throw new IllegalArgumentException("Bad message: " + message);
   }
   final SipClientTransaction ct = this.m_transactions.get(key);
   if (ct == null) {
     m_log.warn("Nothing known about transaction: " + key);
     m_log.warn("Known transactions: " + this.m_transactions.keySet());
   }
   return ct;
 }