From e92e8009a1589d1e049eb7b34038d644ec872b82 Mon Sep 17 00:00:00 2001 From: Konrad Scherer Date: Wed, 24 Sep 2014 09:06:42 -0400 Subject: bitbake: prserv/serv: Improve error message when prserver cannot bind to supplied host address If localhost resolves to a remote address (due to a misconfigured network), starting the pr server will fail without useful information. To reproduce, add ' localhost' to /etc/hosts and run 'bitbake -p'. The error message will be: ERROR: Timeout while attempting to communicate with bitbake server ERROR: Could not connect to server False: Running 'bitbake-prserv --host=localhost --port=0 --start' will fail with: error: [Errno 99] Cannot assign requested address Since these errors does not show the IP address of the attempted socket binding, this results in a lot of wasted time looking at firewall rules, etc. This patch results in the following error message if the socket binding fails: PR Server unable to bind to :0 (Bitbake rev: fae5914030bcf4c061c22fc61034c40c87b7121a) Signed-off-by: Konrad Scherer Signed-off-by: Richard Purdie --- bitbake/lib/prserv/serv.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'bitbake') diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index 1e170cea0a..1b08d59130 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/lib/prserv/serv.py @@ -38,8 +38,17 @@ singleton = None class PRServer(SimpleXMLRPCServer): def __init__(self, dbfile, logfile, interface, daemon=True): ''' constructor ''' - SimpleXMLRPCServer.__init__(self, interface, - logRequests=False, allow_none=True) + import socket + try: + SimpleXMLRPCServer.__init__(self, interface, + logRequests=False, allow_none=True) + except socket.error: + ip=socket.gethostbyname(interface[0]) + port=interface[1] + msg="PR Server unable to bind to %s:%s\n" % (ip, port) + sys.stderr.write(msg) + raise PRServiceConfigError + self.dbfile=dbfile self.daemon=daemon self.logfile=logfile -- cgit v1.2.3-54-g00ecf