aboutsummaryrefslogtreecommitdiffstats
path: root/skype/skyped.py
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@frugalware.org>2008-07-12 22:10:31 +0200
committerMiklos Vajna <vmiklos@frugalware.org>2008-07-12 22:10:31 +0200
commit4b0092ef36e57d7043720078482d01212749e9f1 (patch)
tree45e6b6fbaec3c5209a267c63f4b45e41be170cad /skype/skyped.py
parent9033a0ab5c23a5031f45ab4982c762809db41cd6 (diff)
skyped: send periodically a 'PING' to the client
also ignore the 'PONG' output from it (so don't forward it to skype)
Diffstat (limited to 'skype/skyped.py')
-rw-r--r--skype/skyped.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/skype/skyped.py b/skype/skyped.py
index 32048fdd..dbbd2e53 100644
--- a/skype/skyped.py
+++ b/skype/skyped.py
@@ -63,7 +63,7 @@ def input_handler(fd, io_condition):
skype.send(i.strip())
return True
-def idle_handler(skype):
+def skype_idle_handler(skype):
try:
c = skype.skype.Command("PING", Block=True)
skype.skype.SendCommand(c)
@@ -71,6 +71,16 @@ def idle_handler(skype):
dprint("Warning, pinging Skype failed (%s)." % (s))
return True
+def bitlbee_idle_handler(skype):
+ if options.conn:
+ try:
+ e = "PING"
+ options.conn.send("%s\n" % e)
+ except Exception, s:
+ dprint("Warning, sending '%s' failed (%s)." % (e, s))
+ options.conn.close()
+ return True
+
def server(host, port):
global options
try:
@@ -161,7 +171,7 @@ class SkypeApi:
options.conn.close()
def send(self, msg_text):
- if not len(msg_text):
+ if not len(msg_text) or msg_text == "PONG":
return
e = msg_text.decode(locale.getdefaultlocale()[1])
dprint('>> ' + e)
@@ -272,5 +282,6 @@ if __name__=='__main__':
skype = SkypeApi()
except Skype4Py.SkypeAPIError, s:
sys.exit("%s. Are you sure you have started Skype?" % s)
- gobject.timeout_add(2000, idle_handler, skype)
+ gobject.timeout_add(2000, skype_idle_handler, skype)
+ gobject.timeout_add(60000, bitlbee_idle_handler, skype)
gobject.MainLoop().run()