title: twisted http server error
body: <p>I am using python twisted module to intercept headers. I have the following script:</p>
  
  <pre><code>from twisted.web import proxy, http
  from twisted.internet import reactor
  
  g_port = 8080 #port for listening
  g_request = () # action, params, method
  
  class akaProxy(proxy.Proxy):
  
      def dataReceived(self, data):
  
          action = None
          params = None
          method = None
          global g_request
  
          headers = data.split("\n")
          request = headers[0].split(" ")
          params = headers[len(headers)-1]
  
          method = request[0].lower()
          action = request[1].lower()
  
          print method, action
  
          return proxy.Proxy.dataReceived(self, data)
  
  class ProxyFactory(http.HTTPFactory):
      protocol = akaProxy
  
  
  factory = ProxyFactory()
  reactor.listenTCP(g_port, factory)
  reactor.run()
  </code></pre>
  
  <p>When I run it using localproxy for web browser (<a href="http://sapar.mammedow.com/contact/" rel="nofollow">this URL</a>) give me this error:</p>
  
  <pre><code>Unhandled Error
  Traceback (most recent call last):
    File "test2.py", line 33, in &lt;module&gt;
      reactor.run()
    File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1169, in run
      self.mainLoop()
    File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1181, in mainLoop
      self.doIteration(t)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/pollreactor.py", line 167, in doPoll
      log.callWithLogger(selectable, _drdw, selectable, fd, event)
  --- &lt;exception caught here&gt; ---
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithLogger
      return callWithContext({"system": lp}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in callWithContext
      return context.call({ILogContext: newCtx}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
      return self.currentContext().callWithContext(ctx, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
      return func(*args,**kw)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 599, in _doReadOrWrite
      self._disconnectSelectable(selectable, why, inRead)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 260, in _disconnectSelectable
      selectable.readConnectionLost(f)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 257, in readConnectionLost
      self.connectionLost(reason)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 433, in connectionLost
      Connection.connectionLost(self, reason)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 277, in connectionLost
      protocol.connectionLost(reason)
    File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 455, in connectionLost
      self.handleResponseEnd()
    File "/usr/lib/python2.7/dist-packages/twisted/web/proxy.py", line 88, in handleResponseEnd
      self.father.finish()
    File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 866, in finish
      "Request.finish called on a request after its connection was lost; "
  exceptions.RuntimeError: Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
  </code></pre>
  
  <p>But it continues working, can anyone explain the error and how can I fix it?</p>