r15279@tombo: nickm | 2008-04-22 13:21:01 -0400

Backport: Apply patch from mwenge to fix bug 646: makes stream events for dns requests get generated more consistently.


svn:r14414
This commit is contained in:
Nick Mathewson 2008-04-22 17:21:26 +00:00
parent 2fd8c928b3
commit a041553e21
2 changed files with 11 additions and 3 deletions

View File

@ -30,6 +30,10 @@ Changes in version 0.2.0.24-rc - 2008-04-0?
untrusted sources. Fixes bug 663.
- Non-exit relays no longer allow DNS requests. Fixes bug 619.
Patch from Lodger.
- Make controller stream events for DNS requests more consistent,
by adding "new stream" events for DNS requests, and removing
spurious "stream closed" events" for cached reverse resolves.
Patch from mwenge. Fixes bug 646.
o Minor features (security):
- Reject requests for reverse-dns lookup of names in a private

View File

@ -1342,13 +1342,15 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
&map_expires)) {
char *result = tor_strdup(socks->address);
/* remember _what_ is supposed to have been resolved. */
strlcpy(socks->address, orig_address, sizeof(socks->address));
tor_snprintf(socks->address, sizeof(socks->address), "REVERSE[%s]",
orig_address);
connection_ap_handshake_socks_resolved(conn, RESOLVED_TYPE_HOSTNAME,
strlen(result), result, -1,
map_expires);
connection_mark_unattached_ap(conn,
END_STREAM_REASON_DONE |
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
END_STREAM_REASON_DONE |
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED |
END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED);
return 0;
}
if (options->ClientDNSRejectInternalAddresses) {
@ -2079,9 +2081,11 @@ connection_ap_handshake_send_resolve(edge_connection_t *ap_conn)
string_addr, payload_len) < 0)
return -1; /* circuit is closed, don't continue */
ap_conn->_base.address = tor_strdup("(Tor_internal)");
ap_conn->_base.state = AP_CONN_STATE_RESOLVE_WAIT;
log_info(LD_APP,"Address sent for resolve, ap socket %d, n_circ_id %d",
ap_conn->_base.s, circ->_base.n_circ_id);
control_event_stream_status(ap_conn, STREAM_EVENT_NEW, 0);
control_event_stream_status(ap_conn, STREAM_EVENT_SENT_RESOLVE, 0);
return 0;
}