--- asynchat.py 2010-09-15 23:08:22.000000000 +0600 +++ asynchat.py 2011-02-26 16:05:18.281822396 +0500 @@ -94,6 +94,8 @@ def set_terminator (self, term): "Set the input delimiter. Can be a fixed string of any length, an integer, or None" + if (isinstance(term, int) or isinstance(term, long)) and term < 0: + raise ValueError('Negative terminator value is not allowed') self.terminator = term def get_terminator (self): @@ -121,7 +123,7 @@ while self.ac_in_buffer: lb = len(self.ac_in_buffer) - terminator = self.get_terminator() + terminator = self.terminator if not terminator: # no terminator, collect it all self.collect_incoming_data (self.ac_in_buffer) @@ -132,7 +134,7 @@ if lb < n: self.collect_incoming_data (self.ac_in_buffer) self.ac_in_buffer = '' - self.terminator = self.terminator - lb + self.terminator -= lb else: self.collect_incoming_data (self.ac_in_buffer[:n]) self.ac_in_buffer = self.ac_in_buffer[n:]