X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=server;h=cb9322b183f8ce440e29ced72093fc3eab6f2942;hb=84e763c719b4b659fd01eb3e116c6c615a7d2c1e;hp=2daf0b0223a2f692a1494629cd4db39890440f3c;hpb=1321ad5f1dc05a97d58c4750863e645016fe0aa8;p=hippotat.git diff --git a/server b/server index 2daf0b0..cb9322b 100755 --- a/server +++ b/server @@ -18,7 +18,7 @@ clients = { } def route(packet, saddr, daddr): print('TRACE ', saddr, daddr, packet) - try: client = clients[daddr] + try: dclient = clients[daddr] except KeyError: dclient = None if dclient is not None: dclient.queue_outbound(packet) @@ -102,23 +102,12 @@ class Client(): break # request, and also some non-expired packets - while True: - packet = self.pq.popleft() - if packet is None: break - - encoded = slip.encode(packet) - - if request.sentLength > 0: - if (request.sentLength + len(slip.delimiter) - + len(encoded) > self.max_batch_down): - break - request.write(slip.delimiter) - - request.write(encoded) - self._pq.popLeft() + self._pq.process((lambda: request.sentLength), + request.write, + self.max_batch_down) assert(request.sentLength) - self._rq.popLeft() + self._rq.popleft() request.finish() # round again, looking for more to do