From b2ccfda61b7b7a1b37d4f9ffed57fcc4585d9ce0 Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Thu, 16 Apr 2015 13:41:29 +0200 Subject: Add support for socket timeout. PEP8 fixes --- beinc_generic_client.py | 14 +++++++++++++- beinc_poller.py | 15 ++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/beinc_generic_client.py b/beinc_generic_client.py index 0627ce5..48d6a13 100755 --- a/beinc_generic_client.py +++ b/beinc_generic_client.py @@ -23,7 +23,7 @@ import errno import getpass import httplib # for Python < 2.7.9 import os -import socket # for Python < 2.7.9 +import socket import ssl import sys import xmlrpclib @@ -147,6 +147,9 @@ def action_execute(args): except ssl.SSLError as e: sys.stderr.write('BEINC SSL/TLS error: {0}\n'.format(e)) sys.exit(errno.EPERM) + except socket.error as e: + sys.stderr.write('BEINC connection error: {0}\n'.format(e)) + sys.exit(errno.EPERM) except Exception as e: sys.stderr.write('BEINC generic client error: {0}\n'.format(e)) sys.exit(errno.EPERM) @@ -233,6 +236,13 @@ def main(): dest='ssl_version', default='auto', help='Use SSL version: "auto" (default), "SSLv3", "TLSv1"') + parser.add_argument( + '-T', '--socket-timeout', + metavar='SECONDS', + type=int, + dest='socket_timeout', + default=3, + help='Socket timeout in seconds (0=Python default) (default: 3)') parser.add_argument( '-t', '--title', metavar='TITLE', @@ -262,6 +272,8 @@ def main(): except Exception as e: sys.stderr.write('Unable to open password file: {0}'.format(e)) sys.exit(1) + if args.socket_timeout: + socket.setdefaulttimeout(args.socket_timeout) action_execute(args) sys.exit(0) diff --git a/beinc_poller.py b/beinc_poller.py index dee533e..f9c5cca 100755 --- a/beinc_poller.py +++ b/beinc_poller.py @@ -23,7 +23,8 @@ import errno import getpass import httplib # for Python < 2.7.9 import os -import socket # for Python < 2.7.9 +import sched +import socket import ssl import sys import time @@ -219,6 +220,9 @@ def poll_notifications(scheduler, args): except ssl.SSLError as e: sys.stderr.write('BEINC SSL/TLS error: {0}\n'.format(e)) sys.exit(errno.EPERM) + except socket.error as e: + sys.stderr.write('BEINC connection error: {0}\n'.format(e)) + sys.exit(errno.EPERM) except Exception as e: sys.stderr.write('BEINC generic client error: {0}\n'.format(e)) sys.exit(errno.EPERM) @@ -341,6 +345,13 @@ def main(): dest='ssl_version', default='auto', help='Use SSL version: "auto" (default), "SSLv3", "TLSv1"') + parser.add_argument( + '-T', '--socket-timeout', + metavar='SECONDS', + type=int, + dest='socket_timeout', + default=3, + help='Socket timeout in seconds (0=Python default) (default: 3)') parser.add_argument( '-t', '--osd-timeout', metavar='SECONDS', @@ -376,6 +387,8 @@ def main(): except Exception as e: sys.stderr.write('Unable to open password file: {0}'.format(e)) sys.exit(1) + if args.socket_timeout: + socket.setdefaulttimeout(args.socket_timeout) scheduler = sched.scheduler(time.time, time.sleep) scheduler.enter(args.frequency, 1, -- cgit v1.3