I am trying to debug a scenario wherein a program has an http channel socket 
that receives an HTTP response; and in some cases (5 out of 10,000) the 
channel/transport invokes the lost connection callback while the amount of data 
received is less than the content length.  The connection is used as a producer 
to write to another connection.

I am trying to debug to check whether:
(1) the last chunk (20K+) of data sitting in the incoming response is not being 
propagated up, e.g. due to a prior pauseProducing() call, or 

(2) the data was not sent from the peer (e.g. connection closed without using 
so_linger)

In general, I "presume" lost connection callback on a producer socket would not 
be called if there is pending (paused) data that has yet to be written a 
consumer (socket).  I am also assuming that the assert in 
internet/abstract.py::resumeProducing() [self.connected and not 
self.disconnecting] is valid.  I.E: It would be great someone can confirm that 
scenario (1) above is not possible in twisted (unless a bug).

By the time the lost connection callback is called, the transport channel is 
gone.  I would have to instrument either tcp.py, basic.py, or abstract.py to 
track this.

If the bug is indeed scenario (2), then I will use wireshark (cause the client 
program has actually written the entire response to its end of the connection).

Any clues/suggestions welcome.

Thanks.
-Arun
_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to