diff options
author | VMiklos <vmiklos@frugalware.org> | 2007-08-21 23:37:43 +0200 |
---|---|---|
committer | VMiklos <vmiklos@frugalware.org> | 2007-08-21 23:37:43 +0200 |
commit | 395317200aad6fd04e3355477b8d5fcb1caa45f8 (patch) | |
tree | 71bf726b283c2a8b88f11f037dacb1131f61831d | |
parent | 0ac1b3e0a5ad6c2d3ecca685f80a30ba1ebc95e3 (diff) |
skyped: automatically reconnect if skype is restarted
well, not 100% perfect because we detect the error when we send something. but
far better than writing to devnull forever ;)
-rw-r--r-- | skype/skyped.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/skype/skyped.py b/skype/skyped.py index ff275a15..12767bdc 100644 --- a/skype/skyped.py +++ b/skype/skyped.py @@ -85,7 +85,10 @@ class SkypeApi(dbus.service.Object): sys.exit('Could not bind to Skype client') reply = self.send('PROTOCOL 5') - dbus.service.Object.__init__(self, bus, "/com/Skype/Client", bus_name='com.Skype.API') + try: + dbus.service.Object.__init__(self, bus, "/com/Skype/Client", bus_name='com.Skype.API') + except KeyError: + sys.exit() # skype -> client (async) @dbus.service.method(dbus_interface='com.Skype.API') @@ -104,13 +107,17 @@ class SkypeApi(dbus.service.Object): reply = self.skype_api.Invoke(msg_text) except dbus.exceptions.DBusException, s: reply = str(s) + if(reply.startswith("org.freedesktop.DBus.Error.ServiceUnknown")): + self.remove_from_connection(dbus.SessionBus(), "/com/Skype/Client") + mainloop.quit() dprint('<< ' + reply) return reply if __name__=='__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - skype = SkypeApi() signal.signal(signal.SIGINT, sig_handler) mainloop = gobject.MainLoop() server('localhost', 2727) - mainloop.run() + while True: + skype = SkypeApi() + mainloop.run() |