From 8499e97a0050e6dbd9ea6f72aa1e7826ab003742 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 19 May 2006 14:19:03 -0400 Subject: [PATCH] Merge --- sugar/p2p/MostlyReliablePipe.py | 31 +++++++++++++++++-------------- sugar/p2p/presence.py | 9 ++++++++- sugar/session/session.py | 5 ++++- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/sugar/p2p/MostlyReliablePipe.py b/sugar/p2p/MostlyReliablePipe.py index 9e794739..e6ba3429 100644 --- a/sugar/p2p/MostlyReliablePipe.py +++ b/sugar/p2p/MostlyReliablePipe.py @@ -537,20 +537,23 @@ class MostlyReliablePipe(object): return False def _retransmit_check_worker(self): - now = time.time() - for key in self._incoming.keys()[:]: - message = self._incoming[key] - if message.complete(): - continue - next_rt = message.next_rt_time() - if next_rt == 0 or next_rt > now: - continue - if self._retransmit_request(message): - # Kill the message, too many retries - print "(MRP): Dropped message %s, exceeded retries." % _stringify_sha(message.sha()) - self._dispatched[key] = message - message.set_dispatch_time() - del self._incoming[key] + try: + now = time.time() + for key in self._incoming.keys()[:]: + message = self._incoming[key] + if message.complete(): + continue + next_rt = message.next_rt_time() + if next_rt == 0 or next_rt > now: + continue + if self._retransmit_request(message): + # Kill the message, too many retries + print "(MRP): Dropped message %s, exceeded retries." % _stringify_sha(message.sha()) + self._dispatched[key] = message + message.set_dispatch_time() + del self._incoming[key] + except KeyboardInterrupt: + return False return True def _process_incoming_data(self, segment): diff --git a/sugar/p2p/presence.py b/sugar/p2p/presence.py index 4c5c086f..d0f6000e 100644 --- a/sugar/p2p/presence.py +++ b/sugar/p2p/presence.py @@ -60,7 +60,14 @@ class PresenceDiscovery(object): # print "Browsing domain '%s' on %i.%i ..." % (domain, interface, protocol) - b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.ServiceTypeBrowserNew(interface, protocol, domain, dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_TYPE_BROWSER) + try: + b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.ServiceTypeBrowserNew(interface, protocol, domain, dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_TYPE_BROWSER) + except dbus.DBusException, exc: + str_exc = str(exc) + if str_exc.find("The name org.freedesktop.Avahi was not provided by any .service files") >= 0: + raise Exception("Avahi does not appear to be running. '%s'" % str_exc) + else: + raise exc b.connect_to_signal('ItemNew', self.new_service_type) self._service_type_browsers[(interface, protocol, domain)] = b diff --git a/sugar/session/session.py b/sugar/session/session.py index 94a61263..df0a0db4 100644 --- a/sugar/session/session.py +++ b/sugar/session/session.py @@ -38,4 +38,7 @@ def start(console): args.append('--console') os.spawnvp(os.P_NOWAIT, 'python', args) - gtk.main() + try: + gtk.main() + except KeyboardInterrupt: + pass