Index: squid-tagger.py ================================================================== --- squid-tagger.py +++ squid-tagger.py @@ -178,33 +178,32 @@ buffer = '' while True: # checking if there is any data or witing for data to arrive kevs = self._kq.control(None, 1, timeout) if len(kevs) > 0 and kevs[0].filter == self._select.KQ_FILTER_READ and kevs[0].data > 0: + # reading data in + new_buffer = sys.stdin.read(kevs[0].data) + # if no data was sent - we have reached and of file + if len(new_buffer) == 0: + eof = True + else: + # adding current buffer to old buffer remains + buffer += new_buffer + # splitting to lines + lines = buffer.split('\n') + # last line that was not terminate by newline returns to buffer + buffer = lines[-1] + # an only if there was at least one newline + if len(lines) > 1: + for line in lines[:-1]: + # add data to the queue + if self.check(line + '\n'): + # don't wait for more data, start processing + timeout = 0 # if kq reports en of stream refuse to read more of it if kevs[0].flags >> 15 == 1: eof = True - else: - # reading data in - new_buffer = sys.stdin.read(kevs[0].data) - # if no data was sent - we have reached and of file - if len(new_buffer) == 0: - eof = True - else: - # adding current buffer to old buffer remains - buffer += new_buffer - # splitting to lines - lines = buffer.split('\n') - # last line that was not terminate by newline returns to buffer - buffer = lines[-1] - # an only if there was at least one newline - if len(lines) > 1: - for line in lines[:-1]: - # add data to the queue - if self.check(line + '\n'): - # don't wait for more data, start processing - timeout = 0 else: if len(self._queue) > 0: req = self._queue.pop(0) Checker.process(self, req[0], req[1], req[2], req[3]) if len(self._queue) == 0: