Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sugar/p2p/MostlyReliablePipe.py31
-rw-r--r--sugar/p2p/presence.py9
-rw-r--r--sugar/session/session.py5
3 files changed, 29 insertions, 16 deletions
diff --git a/sugar/p2p/MostlyReliablePipe.py b/sugar/p2p/MostlyReliablePipe.py
index 9e79473..e6ba342 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 4c5c086..d0f6000 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 94a6126..df0a0db 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