Commit b59d7913 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Log find_rp_for_intro_() failures at LOG_PROTOCOL_WARN.

Closes ticket 18761.

Also fix a whitespace issue.
parent de08f2d9
Loading
Loading
Loading
Loading

changes/bug18761

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Minor feature (logging):
    - When rejecting a misformed INTRODUCE2 cell, only log at PROTOCOL_WARN
      severity. Closes ticket 18761.
+10 −5
Original line number Diff line number Diff line
@@ -1445,6 +1445,7 @@ rend_service_receive_introduction(origin_circuit_t *circuit,
  int status = 0, result;
  const or_options_t *options = get_options();
  char *err_msg = NULL;
  int err_msg_severity = LOG_WARN;
  const char *stage_descr = NULL;
  int reason = END_CIRC_REASON_TORPROTOCOL;
  /* Service/circuit/key stuff we can learn before parsing */
@@ -1596,8 +1597,10 @@ rend_service_receive_introduction(origin_circuit_t *circuit,

  /* Find the rendezvous point */
  rp = find_rp_for_intro(parsed_req, &err_msg);
  if (!rp)
  if (!rp) {
    err_msg_severity = LOG_PROTOCOL_WARN;
    goto log_error;
  }

  /* Check if we'd refuse to talk to this router */
  if (options->StrictNodes &&
@@ -1735,7 +1738,7 @@ rend_service_receive_introduction(origin_circuit_t *circuit,
    }
  }

  log_warn(LD_REND, "%s on circ %u", err_msg,
  log_fn(err_msg_severity, LD_REND, "%s on circ %u", err_msg,
           (unsigned)circuit->base_.n_circ_id);
 err:
  status = -1;
@@ -1797,7 +1800,7 @@ find_rp_for_intro(const rend_intro_cell_t *intro,
    if (!rp) {
      if (err_msg_out) {
        tor_asprintf(&err_msg,
                     "Could build extend_info_t for router %s named "
                     "Couldn't build extend_info_t for router %s named "
                     "in INTRODUCE2 cell",
                     escaped_safe_str_client(rp_nickname));
      }
@@ -1833,8 +1836,10 @@ find_rp_for_intro(const rend_intro_cell_t *intro,
  goto done;

 err:
  if (err_msg_out) *err_msg_out = err_msg;
  else tor_free(err_msg);
  if (err_msg_out)
    *err_msg_out = err_msg;
  else
    tor_free(err_msg);

 done:
  return rp;