Fix from the Madusa mailing list:
http://groups.yahoo.com/group/medusa/message/333
It's clear that Medusa should not be checking for an empty buffer
via "buf is ''". The patch merely changes "is" to "==". However,
there's a mystery here all the same: Python attempts to store null
strings uniquely, so it's unclear why "buf is ''" ever returned
false when buf actually was empty. *Some* string operations produce
non-unique null strings, e.g.
>>> "abc"*0 is "abc"*0
0
>>>
but they're rare, and I don't see any such operations in asynchat.
diff --git a/Lib/asynchat.py b/Lib/asynchat.py
index 584aab9..1f9fc68 100644
--- a/Lib/asynchat.py
+++ b/Lib/asynchat.py
@@ -165,7 +165,7 @@
# return len(self.ac_out_buffer) or len(self.producer_fifo) or (not self.connected)
# this is about twice as fast, though not as clear.
return not (
- (self.ac_out_buffer is '') and
+ (self.ac_out_buffer == '') and
self.producer_fifo.is_empty() and
self.connected
)