Oops, we were being overzealous about calling nowrite().
We were doing it as soon as the other end was shut_read, but we didn't confirm first that the other end's read buffer had been totally emptied. This caused problems on twitter.com, at least, where they create a zillion short-lived connections. I don't actually need these lines at all, as it turns out, because we were already calling nowrite() correctly on the other end after a buffer got emptied.
|@@ -237,9 +237,7 @@ def __init__(self, wrap1, wrap2):|
|self.wrap2 = wrap2|
|def pre_select(self, r, w, x):|
|- if self.wrap1.shut_read: self.wrap2.nowrite()|
|if self.wrap1.shut_write: self.wrap2.noread()|
|- if self.wrap2.shut_read: self.wrap1.nowrite()|
|if self.wrap2.shut_write: self.wrap1.noread()|