[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] [tor/maint-0.2.2] Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2



commit 9d133464c874191414dd51f546d09364419040cf
Merge: 6def568 31b562e
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date:   Sat Jan 15 13:10:14 2011 -0500

    Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2

 src/or/dnsserv.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --combined src/or/dnsserv.c
index d5faffb,f8b5c3c..8222c8b
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@@ -9,21 -9,7 +9,21 @@@
   **/
  
  #include "or.h"
 +#include "dnsserv.h"
 +#include "config.h"
 +#include "connection.h"
 +#include "connection_edge.h"
 +#include "control.h"
 +#include "main.h"
 +#include "policies.h"
 +#ifdef HAVE_EVENT2_DNS_H
 +#include <event2/dns.h>
 +#include <event2/dns_compat.h>
 +/* XXXX022 this implies we want an improved evdns  */
 +#include <event2/dns_struct.h>
 +#else
  #include "eventdns.h"
 +#endif
  
  /** Helper function: called by evdns whenever the client sends a request to our
   * DNSPort.  We need to eventually answer the request <b>req</b>.
@@@ -99,7 -85,12 +99,7 @@@ evdns_server_callback(struct evdns_serv
      evdns_server_request_respond(req, DNS_ERR_NONE);
      return;
    }
 -  if (q->type == EVDNS_TYPE_A) {
 -    /* Refuse any attempt to resolve a noconnect address, right now. */
 -    if (hostname_is_noconnect_address(q->name)) {
 -      err = DNS_ERR_REFUSED;
 -    }
 -  } else {
 +  if (q->type != EVDNS_TYPE_A) {
      tor_assert(q->type == EVDNS_TYPE_PTR);
    }
  
@@@ -141,18 -132,17 +141,18 @@@
  
    control_event_stream_status(conn, STREAM_EVENT_NEW, 0);
  
 -  /* Now, throw the connection over to get rewritten (which will answer it
 -  * immediately if it's in the cache, or completely bogus, or automapped),
 -  * and then attached to a circuit. */
 +  /* Now, unless a controller asked us to leave streams unattached,
 +  * throw the connection over to get rewritten (which will
 +  * answer it immediately if it's in the cache, or completely bogus, or
 +  * automapped), and then attached to a circuit. */
    log_info(LD_APP, "Passing request for %s to rewrite_and_attach.",
 -           escaped_safe_str(q->name));
 +           escaped_safe_str_client(q->name));
    q_name = tor_strdup(q->name); /* q could be freed in rewrite_and_attach */
 -  connection_ap_handshake_rewrite_and_attach(conn, NULL, NULL);
 +  connection_ap_rewrite_and_attach_if_allowed(conn, NULL, NULL);
    /* Now, the connection is marked if it was bad. */
  
 -  log_info(LD_APP, "Passed request for %s to rewrite_and_attach.",
 -           escaped_safe_str(q_name));
 +  log_info(LD_APP, "Passed request for %s to rewrite_and_attach_if_allowed.",
 +           escaped_safe_str_client(q_name));
    tor_free(q_name);
  }
  
@@@ -187,18 -177,17 +187,18 @@@ dnsserv_launch_request(const char *name
      return -1;
    }
  
 -  /* Now, throw the connection over to get rewritten (which will answer it
 -  * immediately if it's in the cache, or completely bogus, or automapped),
 -  * and then attached to a circuit. */
 +  /* Now, unless a controller asked us to leave streams unattached,
 +  * throw the connection over to get rewritten (which will
 +  * answer it immediately if it's in the cache, or completely bogus, or
 +  * automapped), and then attached to a circuit. */
    log_info(LD_APP, "Passing request for %s to rewrite_and_attach.",
 -           escaped_safe_str(name));
 +           escaped_safe_str_client(name));
    q_name = tor_strdup(name); /* q could be freed in rewrite_and_attach */
 -  connection_ap_handshake_rewrite_and_attach(conn, NULL, NULL);
 +  connection_ap_rewrite_and_attach_if_allowed(conn, NULL, NULL);
    /* Now, the connection is marked if it was bad. */
  
 -  log_info(LD_APP, "Passed request for %s to rewrite_and_attach.",
 -           escaped_safe_str(q_name));
 +  log_info(LD_APP, "Passed request for %s to rewrite_and_attach_if_allowed.",
 +           escaped_safe_str_client(q_name));
    tor_free(q_name);
    return 0;
  }
@@@ -282,6 -271,7 +282,7 @@@ dnsserv_resolved(edge_connection_t *con
                                       name,
                                       1, (char*)answer, ttl);
    } else if (answer_type == RESOLVED_TYPE_HOSTNAME &&
+              answer_len < 256 &&
               conn->socks_request->command == SOCKS_COMMAND_RESOLVE_PTR) {
      char *ans = tor_strndup(answer, answer_len);
      evdns_server_request_add_ptr_reply(req, NULL,
@@@ -308,8 -298,8 +309,8 @@@ dnsserv_configure_listener(connection_
    tor_assert(conn->s >= 0);
    tor_assert(conn->type == CONN_TYPE_AP_DNS_LISTENER);
  
 -  conn->dns_server_port = evdns_add_server_port(conn->s, 0,
 -                                                evdns_server_callback, NULL);
 +  conn->dns_server_port =
 +    tor_evdns_add_server_port(conn->s, 0, evdns_server_callback, NULL);
  }
  
  /** Free the evdns server port for <b>conn</b>, which must be an