Using the Linux onioncircuits package or carml monitor, I see circuits for onions that I'm accessing (client-side circuits). I also see circuits for onions that I'm hosting, and accessing from another machine (onion-side circuits).

However, I only see streams attached to client-side circuits. Streams attached to HS_CLIENT_REND circuits are the most persistent. I see no streams attached to onion-side circuits (HS_SERVICE_HSDIR, HS_SERVICE_INTRO or HS_SERVICE_REND).

How might I display them?

Edit: In .../txtorcon/stream.py I see, at line 25:

class Stream(object):
    Represents an active stream in Tor's state (:class:`txtorcon.TorState`).
    :ivar state:
        Tor's idea of the stream's state, one of:
          - NEW: New request to connect
          - NEWRESOLVE: New request to resolve an address
          - REMAP: Address re-mapped to another
          - SENTCONNECT: Sent a connect cell along a circuit
          - SENTRESOLVE: Sent a resolve cell along a circuit
          - SUCCEEDED: Received a reply; stream established
          - FAILED: Stream failed and not retriable
          - CLOSED: Stream closed
          - DETACHED: Detached from circuit; still retriable

    :ivar target_host:
        Something like www.example.com -- the host the stream is destined for.

That implies to me that :class:txtorcon.TorState only includes client-side streams. But perhaps I'm reading too literally.

1 Answer 1


After reading control-spec.txt, I understand. I think.

It's just that only client-side circuits have streams. Onion-side circuits simply handle cells. At lines 2023-2035, for example:

   The "PURPOSE" field is provided only in versions and
   later, and only if extended events are enabled (see 3.19).  Clients
   MUST accept purposes not listed above.  Purposes are defined as

      GENERAL         (circuit for AP and/or directory request streams)
      HS_CLIENT_INTRO (HS client-side introduction-point circuit)
      HS_CLIENT_REND  (HS client-side rendezvous circuit; carries AP streams)
      HS_SERVICE_INTRO (HS service-side introduction-point circuit)
      HS_SERVICE_REND (HS service-side rendezvous circuit)
      TESTING         (reachability-testing circuit; carries no traffic)
      CONTROLLER      (circuit built by a controller)
      MEASURE_TIMEOUT (circuit being kept around to see how long it takes)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .