summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonrad Scherer <Konrad.Scherer@windriver.com>2014-09-24 09:06:42 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-09-29 12:08:48 +0100
commite92e8009a1589d1e049eb7b34038d644ec872b82 (patch)
tree75d0f2e32af8cd23c82d4aeaee1c3c505b81b8a9
parent438a50844285238934f9d49e72362e19281e95c8 (diff)
downloadpoky-e92e8009a1589d1e049eb7b34038d644ec872b82.tar.gz
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 '<bogus ip> 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 <bogus ip>:0 (Bitbake rev: fae5914030bcf4c061c22fc61034c40c87b7121a) Signed-off-by: Konrad Scherer <Konrad.Scherer@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/prserv/serv.py13
1 files changed, 11 insertions, 2 deletions
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
38class PRServer(SimpleXMLRPCServer): 38class PRServer(SimpleXMLRPCServer):
39 def __init__(self, dbfile, logfile, interface, daemon=True): 39 def __init__(self, dbfile, logfile, interface, daemon=True):
40 ''' constructor ''' 40 ''' constructor '''
41 SimpleXMLRPCServer.__init__(self, interface, 41 import socket
42 logRequests=False, allow_none=True) 42 try:
43 SimpleXMLRPCServer.__init__(self, interface,
44 logRequests=False, allow_none=True)
45 except socket.error:
46 ip=socket.gethostbyname(interface[0])
47 port=interface[1]
48 msg="PR Server unable to bind to %s:%s\n" % (ip, port)
49 sys.stderr.write(msg)
50 raise PRServiceConfigError
51
43 self.dbfile=dbfile 52 self.dbfile=dbfile
44 self.daemon=daemon 53 self.daemon=daemon
45 self.logfile=logfile 54 self.logfile=logfile