|
@@ -92,7 +92,10 @@ class deferring_globbing_producer:
|
|
|
if data is NOT_DONE_YET:
|
|
|
return NOT_DONE_YET
|
|
|
if data:
|
|
|
- self.buffer = self.buffer + data
|
|
|
+ try:
|
|
|
+ self.buffer = self.buffer + data
|
|
|
+ except TypeError:
|
|
|
+ self.buffer = as_bytes(self.buffer) + as_bytes(data)
|
|
|
else:
|
|
|
break
|
|
|
r = self.buffer
|
|
@@ -340,6 +343,13 @@ class deferring_http_channel(http_server.http_channel):
|
|
|
else:
|
|
|
return False
|
|
|
|
|
|
+ # It is possible that self.ac_out_buffer is equal b''
|
|
|
+ # and in Python3 b'' is not equal ''. This cause
|
|
|
+ # http_server.http_channel.writable(self) is always True.
|
|
|
+ # To avoid this case, we need to force self.ac_out_buffer = ''
|
|
|
+ if len(self.ac_out_buffer) == 0:
|
|
|
+ self.ac_out_buffer = ''
|
|
|
+
|
|
|
return http_server.http_channel.writable(self)
|
|
|
|
|
|
def refill_buffer (self):
|
|
@@ -366,7 +376,11 @@ class deferring_http_channel(http_server.http_channel):
|
|
|
return
|
|
|
|
|
|
elif data:
|
|
|
- self.ac_out_buffer = self.ac_out_buffer + data
|
|
|
+ try:
|
|
|
+ self.ac_out_buffer = self.ac_out_buffer + data
|
|
|
+ except TypeError:
|
|
|
+ self.ac_out_buffer = as_bytes(self.ac_out_buffer) + as_bytes(data)
|
|
|
+
|
|
|
self.delay = False
|
|
|
return
|
|
|
else:
|