[or-cvs] Fix tor-resolve implementation to prevent crashes and send ...
Nick Mathewson
nickm at seul.org
Sat Feb 5 21:03:27 UTC 2005
Update of /home/or/cvsroot/tor/src/or
In directory moria.mit.edu:/tmp/cvs-serv29573/src/or
Modified Files:
connection_edge.c dns.c
Log Message:
Fix tor-resolve implementation to prevent crashes and send resolves when we should.
Index: connection_edge.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/connection_edge.c,v
retrieving revision 1.273
retrieving revision 1.274
diff -u -d -r1.273 -r1.274
--- connection_edge.c 4 Feb 2005 01:49:58 -0000 1.273
+++ connection_edge.c 5 Feb 2005 21:03:24 -0000 1.274
@@ -904,18 +904,17 @@
dummy_conn->state = EXIT_CONN_STATE_RESOLVEFAILED;
dummy_conn->purpose = EXIT_PURPOSE_RESOLVE;
- dummy_conn->next_stream = circ->resolving_streams;
- circ->resolving_streams = dummy_conn;
-
/* send it off to the gethostbyname farm */
switch (dns_resolve(dummy_conn)) {
case 1: /* The result was cached; a resolved cell was sent. */
- case -1:
- /* dummy_conn got freed, don't touch it */
+ case -1: /* Impossible to resolve; a resolved cell was sent. */
+ connection_free(dummy_conn);
return 0;
case 0: /* resolve added to pending list */
+ dummy_conn->next_stream = circ->resolving_streams;
+ circ->resolving_streams = dummy_conn;
assert_circuit_ok(circ);
- ;
+ break;
}
return 0;
}
Index: dns.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/dns.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -d -r1.134 -r1.135
--- dns.c 4 Feb 2005 01:49:58 -0000 1.134
+++ dns.c 5 Feb 2005 21:03:24 -0000 1.135
@@ -216,6 +216,8 @@
* know the answer. */
if (tor_inet_aton(exitconn->address, &in) != 0) {
exitconn->addr = ntohl(in.s_addr);
+ if (exitconn->purpose == EXIT_PURPOSE_RESOLVE)
+ send_resolved_cell(exitconn, RESOLVED_TYPE_IPV4);
return 1;
}
More information about the tor-commits
mailing list