private void ack(SipResponse response) {
    SipRequest ack = _request.createRequest(SipMethod.ACK);

    if (ack.to().getTag() == null) {
      String tag = response.to().getTag();
      if (tag != null) ack.to().setParameter(AddressImpl.TAG, tag);
    }
    try {
      getServer().sendRequest(ack, getConnection());
    } catch (IOException e) {
      LOG.ignore(e);
    }
  }
  private ClientTransaction doCancel(SipRequest cancel) {
    ClientTransactionImpl cancelTx =
        new ClientTransactionImpl(cancel, _listener, cancel.getTopVia().getBranch());
    cancelTx.setTransactionManager(_transactionManager);
    cancelTx._connection = getConnection();
    cancelTx._listener = _listener;

    _transactionManager.addClientTransaction(cancelTx);

    try {
      cancelTx.start();
    } catch (IOException e) {
      LOG.warn(e);
    }
    return cancelTx;
  }
 public ClientTransactionImpl(SipRequest request, ClientTransactionListener listener) {
   this(request, listener, request.appSession().newBranch());
 }