Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Tor Tor
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 316
    • Issues 316
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 34
    • Merge requests 34
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • The Tor Project
  • Core
  • TorTor
  • Issues
  • #646
Closed
Open
Created Mar 29, 2008 by Robert Hogan@hoganrobert

miscellaneous stream event bugs for DNS requests

The response to a reverse lookup from the controller looks like:

650 ADDRMAP REVERSE[64.4.33.7] lc2.bay0.hotmail.com "2008-03-29 21:59:05" EXPIRES="2008-03-29 21:59:05"

Except when the result is already cached. Then it looks like:

650 ADDRMAP 64.4.33.7 lc2.bay0.hotmail.com "2008-03-29 21:59:05" EXPIRES="2008-03-29 21:59:05"

The 'REVERSE' is missing. Not sure which way is the 'correct' way - assume it's the non-cached response.

Also,

  • There's currently no 'NEW' stream event for DNS requests. Add one.
  • Cached reverse DNS requests get a 'CLOSE' event but no 'NEW' event. Just drop the 'CLOSE' event, since no conn is created.

Index: src/or/connection_edge.c

--- src/or/connection_edge.c (revision 14233) +++ src/or/connection_edge.c (working copy) @@ -1348,13 +1348,16 @@ &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);
  •  strlcpy(socks->address, orig_address, sizeof(socks->address));
     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) { @@ -2084,9 +2087,11 @@ 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; }

[Automatically added by flyspray2trac: Operating System: All]

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking