How mymirai-nikki/tor works
Tor is privacy software that routes users’ connections through a volunteer relay network, obscuring the link between their addresses and destinations. A client accepts proxy traffic, obtains network-directory information, selects relays, and builds circuits; relays forward traffic, while onion-service code supports private services. Configuration and the event loop provide an internal runtime layer, and the Control interface exposes management and events. The tree and README establish the product; edges are limited to relationships visible in the README or sampled source index, so unsampled integrations are not inferred.
Main entry points: circuitbuild.c Circuit building · routerlist.c Router descriptors · dirclient.c Directory downloads · main.c Tor startup
Components 23
Runtime and config
- Configuration
src/app/config/config.c - Tor startup
src/app/main/main.c - Event loop
src/core/mainloop/mainloop.c - Connection handling
src/core/mainloop/connection.c
Client access
- Proxy protocols
src/feature/client/proxymode.c - Client streams
src/core/or/connection_edge.c - Entry selection
src/feature/client/entrynodes.c
Network directory
- Directory downloads
src/feature/dirclient/dirclient.c - Directory service
src/feature/dircache/dirserv.c - Descriptor parsing
src/feature/dirparse/routerparse.c - Router descriptors
src/feature/nodelist/routerlist.c - Network consensus
src/feature/nodelist/networkstatus.c - Relay selection data
src/feature/nodelist/nodelist.c
Circuits and relays
- Circuit building
src/core/or/circuitbuild.c - Circuit state
src/core/or/circuitlist.c - Relay channels
src/core/or/channel.c - Relay forwarding
src/core/or/relay.c - Congestion control
src/core/or/congestion_control_common.c
Onion services and control
- Onion-service client
src/feature/hs/hs_client.c - Onion-service host
src/feature/hs/hs_service.c - Control interface
src/feature/control/control.c - Control events
src/feature/control/control_events.c
Other components
- Internet user
Connections 21
- Internet user → Proxy protocols: opens proxy
- Tor startup → Configuration: loads options
src/app/main/main.c - Tor startup → Event loop: starts loop
src/app/main/main.c - Tor startup → Connection handling: manages connections
src/app/main/main.c - Proxy protocols → Client streams: accepts streams
- Client streams → Circuit building: attaches streams
src/core/or/connection_edge.c - Directory downloads → Router descriptors: uses router data
src/feature/dirclient/dirclient.c - Descriptor parsing → Router descriptors: adds descriptors
src/feature/dirparse/routerparse.c - Router descriptors → Directory downloads: requests downloads
src/feature/nodelist/routerlist.c - Router descriptors → Directory service: shares directory service
src/feature/nodelist/routerlist.c - Onion-service client → Directory downloads: fetches descriptors
src/feature/hs/hs_client.c - Onion-service client → Circuit building: builds service circuits
src/feature/hs/hs_client.c - Onion-service host → Directory downloads: publishes descriptors
src/feature/hs/hs_service.c - Onion-service host → Circuit building: builds service circuits
src/feature/hs/hs_service.c - Circuit building → Circuit state: tracks circuits
- Circuit building → Relay channels: uses channels
- Relay forwarding → Relay channels: forwards cells
- Control interface → Control events: emits events
- Network consensus → Relay selection data: updates relay data
- Circuit building → Congestion control: applies congestion control
- Entry selection → Circuit building: selects entry