Opened 6 years ago

Last modified 21 months ago

#12836 new defect

scramblesuit: 'State' object has no attribute 'closingThreshold'

Reported by: asn Owned by:
Priority: Medium Milestone:
Component: Archived/Obfsproxy Version:
Severity: Normal Keywords:
Cc: phw, yawning Actual Points:
Parent ID: Points:
Reviewer: Sponsor:


Got this with on a bridge with obfsproxy-0.2.11:

[ERROR] Unhandled Error
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/", line 88, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/", line 73, in callWithContext
    return{ILogContext: newCtx}, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/python/", line 81, in callWithContext
    return func(*args,**kw)
--- <exception caught here> ---
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/internet/", line 614, in _doReadOrWrite
    why = selectable.doRead()
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/internet/", line 215, in doRead
    return self._dataReceived(data)
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.2.0-py2.7-linux-x86_64.egg/twisted/internet/", line 221, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.11-py2.7.egg/obfsproxy/network/", line 320, in dataReceived
    self.circuit.dataReceived(self.buffer, self)
  File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.11-py2.7.egg/obfsproxy/network/", line 161, in dataReceived
  File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.11-py2.7.egg/obfsproxy/transports/scramblesuit/", line 495, in receivedDownstream
    if self.drainedHandshake > self.srvState.closingThreshold:
exceptions.AttributeError: 'State' object has no attribute 'closingThreshold'

Child Tickets

Change History (4)

comment:1 Changed 6 years ago by yawning

I believe this is a problem that occurs when a bridge is upgraded. The state object (scramblesuit/ uses pickling and currently does not have code generate the parameter in question when a pre-existing state object is loaded from disk. It is relatively simple to add the appropriate code to load().

FWIW, the exception is triggered after a handshake has no possible hope of succeeding (and this only affects pre-existing bridges that upgrade) so it's probably not a huge priority, though bridges that display this error will be somewhat more vulnerable to active attacks (The point where the bridge gives up being static is a distinguishes of sorts).

comment:2 Changed 3 years ago by teor

Severity: Normal

Set all open tickets without a severity to "Normal"

comment:3 Changed 21 months ago by teor

Owner: asn deleted
Status: newassigned

asn does not need to own any obfuscation tickets any more. Default owners are trouble.

comment:4 Changed 21 months ago by cohosh

Status: assignednew

tickets are unassigned, reverting to 'new'

Note: See TracTickets for help on using tickets.