Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
Trac
Trac
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 246
    • Issues 246
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Operations
    • Operations
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar

GitLab is used only for code review, issue tracking and project management. Canonical locations for source code are still https://gitweb.torproject.org/ https://git.torproject.org/ and git-rw.torproject.org.

  • Legacy
  • TracTrac
  • Issues
  • #16174

Closed
Open
Opened May 24, 2015 by toralf@toralf

stem + ipv6 (+ python3 ?) = " Nickname in the circuit path is malformed (%s)' % nickname"

I got with stem-1.4.1 and ipv6 enabled Tor exit relay :

tfoerste@tor-relay ~ $ Exception in thread Event Notifier:
Traceback (most recent call last):
  File "/usr/lib64/python3.3/site-packages/stem/response/events.py", line 844, in _parse
    stem.control._parse_circ_entry(self.endpoint)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 3601, in _parse_circ_entry
    raise stem.ProtocolError('Nickname in the circuit path is malformed (%s)' % nickname)
stem.ProtocolError: Nickname in the circuit path is malformed (2607:ff58::d053:df22:52773)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib64/python3.3/threading.py", line 901, in _bootstrap_inner
    self.run()
  File "/usr/lib64/python3.3/threading.py", line 858, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 882, in _event_loop
    self._handle_event(event_message)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 3474, in _handle_event
    stem.response.convert('EVENT', event_message, arrived_at = time.time())
  File "/usr/lib64/python3.3/site-packages/stem/response/__init__.py", line 135, in convert
    message._parse_message(**kwargs)
  File "/usr/lib64/python3.3/site-packages/stem/response/events.py", line 66, in _parse_message
    self._parse()
  File "/usr/lib64/python3.3/site-packages/stem/response/events.py", line 852, in _parse
    raise stem.ProtocolError("ORCONN's endpoint location's port is invalid: %s" % self)
stem.ProtocolError: ORCONN's endpoint location's port is invalid: ORCONN 2607:ff58::d053:df22:52773 NEW ID=937797

for :

#

#   Toralf Foerster
#   Hamburg
#   Germany

# collect data wrt to https://trac.torproject.org/projects/tor/ticket/13603
#

import time
import functools

#       https://stem.torproject.org/index.html
#
from stem import ORStatus, ORClosureReason
from stem.control import EventType, Controller


def main():
  class Cnt(object):
    def __init__(self, done=0, closed=0, ioerror=0):
      self.done = done
      self.closed = closed
      self.ioerror = ioerror

  c = Cnt()

  with Controller.from_port() as controller:
    controller.authenticate()

    orconn_listener = functools.partial(orconn_event, controller, c)
    controller.add_event_listener(orconn_listener, EventType.ORCONN)

    while True:
      time.sleep(1)

def orconn_event(controller, c, event):
  if event.status == ORStatus.CLOSED:
    c.closed += 1

    if event.reason == ORClosureReason.DONE:
      c.done += 1

    if event.reason == ORClosureReason.IOERROR:
      c.ioerror += 1
      fingerprint = event.endpoint_fingerprint

      try:
        relay = controller.get_network_status(fingerprint)
        print (" %i %i %i %i %s %s %15s %5i %s %s" % (c.closed, c.done, c.ioerror, event.arrived_at, time.ctime(event.arrived_at), fingerprint, relay.address, relay.or_port, controller.get_info("ip-to-country/%s" % relay.address, 'unknown'), relay.nickname))
      except Exception:
        print (" %i %i %i %i %s %s"                % (c.closed, c.done, c.ioerror, event.arrived_at, time.ctime(event.arrived_at), fingerprint))

if __name__ == '__main__':
  main()
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: legacy/trac#16174