code: private void handleInConfirmedState(final SipPacket msg) throws SipPacketParseException {
          if (msg.isRequest()) {
              if (msg.isBye()) {
                  if (this.byeRequest == null) {
                      this.byeRequest = msg.toRequest();
                  }
                  transition(CallState.COMPLETED, msg);
              } else if (msg.isAck()) {
                  this.handshakeIsComplete = true;
                  transition(CallState.IN_CALL, msg);
              }
          } else {
              final SipResponsePacket response = (SipResponsePacket) msg;
              if (response.isSuccess()) {
                  // probably re-transmits.
                  // need to check it better
                  this.reTransmisionsDetected = true;
              } else if (response.isBye()) {
                  // already in completed (or should be)
              }
          }
      }
docs: We will only get to the confirmed state on a 2xx response to the INVITE.
  From here, we can stay in the confirmed state if we get an ACK or
  transition over to completed if we get a BYE request.
  
  @param msg
  @throws SipPacketParseException