Exemplo n.º 1
0
  private void handleErrorMessage(ErrorMessage errorMessage) throws OtrException {
    logger.finest(
        getSessionID().getAccountID()
            + " received an error message from "
            + getSessionID().getUserID()
            + " throught "
            + getSessionID().getUserID()
            + ".");

    OtrPolicy policy = getSessionPolicy();
    // Re-negotiate if we got an error and we are encrypted
    if (policy.getErrorStartAKE() && getSessionStatus() == SessionStatus.ENCRYPTED) {
      showWarning(errorMessage.error + " Initiating encryption.");

      logger.finest("Error message starts AKE.");
      doTransmitLastMessage = true;
      isLastMessageRetransmit = true;

      Vector<Integer> versions = new Vector<Integer>();
      if (policy.getAllowV1()) versions.add(1);

      if (policy.getAllowV2()) versions.add(2);

      logger.finest("Sending Query");
      injectMessage(new QueryMessage(versions));
    } else {
      showError(errorMessage.error);
    }
  }