Commit 65a0f895 authored by Andrea Shepard's avatar Andrea Shepard
Browse files

Check for orconns and use connection_or_close_for_error() when appropriate in...

Check for orconns and use connection_or_close_for_error() when appropriate in connection_handle_write_impl()
parent 125c8e54
Loading
Loading
Loading
Loading

changes/bug11302

0 → 100644
+4 −0
Original line number Diff line number Diff line
  o Bugfixes:
    - Check for orconns and use connection_or_close_for_error() rather than
      connection_mark_for_close() directly in the getsockopt() failure case
      of connection_handle_write_impl().  Fixes bug #11302.
+9 −3
Original line number Diff line number Diff line
@@ -3705,9 +3705,15 @@ connection_handle_write_impl(connection_t *conn, int force)
  if (connection_state_is_connecting(conn)) {
    if (getsockopt(conn->s, SOL_SOCKET, SO_ERROR, (void*)&e, &len) < 0) {
      log_warn(LD_BUG, "getsockopt() syscall failed");
      if (CONN_IS_EDGE(conn))
      if (conn->type == CONN_TYPE_OR) {
        or_connection_t *orconn = TO_OR_CONN(conn);
        connection_or_close_for_error(orconn, 0);
      } else {
        if (CONN_IS_EDGE(conn)) {
          connection_edge_end_errno(TO_EDGE_CONN(conn));
        }
        connection_mark_for_close(conn);
      }
      return -1;
    }
    if (e) {