From 15749dc4d78fc330919c1417c4621a321186df5c Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 28 Aug 2012 10:22:43 +0200 Subject: [PATCH] Respond to all broadcasts at once, not just to one. --- .../devices/smart_device_app/driver.py | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/calibre/devices/smart_device_app/driver.py b/src/calibre/devices/smart_device_app/driver.py index 5b067b1819..b321182916 100644 --- a/src/calibre/devices/smart_device_app/driver.py +++ b/src/calibre/devices/smart_device_app/driver.py @@ -579,16 +579,20 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin): self._close_device_socket() return (self.is_connected, self) if getattr(self, 'broadcast_socket', None) is not None: - ans = select.select((self.broadcast_socket,), (), (), 0) - if len(ans[0]) > 0: - try: - packet = self.broadcast_socket.recvfrom(100) - remote = packet[1] - message = str(socket.gethostname().partition('.')[0] + '|') + str(self.port) - self._debug('received broadcast', packet, message) - self.broadcast_socket.sendto(message, remote) - except: - traceback.print_exc() + while True: + ans = select.select((self.broadcast_socket,), (), (), 0) + if len(ans[0]) > 0: + try: + packet = self.broadcast_socket.recvfrom(100) + remote = packet[1] + message = str(socket.gethostname().partition('.')[0] + + '|') + str(self.port) + self._debug('received broadcast', packet, message) + self.broadcast_socket.sendto(message, remote) + except: + pass + else: + break if getattr(self, 'listen_socket', None) is not None: ans = select.select((self.listen_socket,), (), (), 0)