summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/prserv
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 /bitbake/lib/prserv
parent438a50844285238934f9d49e72362e19281e95c8 (diff)
downloadpoky-e92e8009a1589d1e049eb7b34038d644ec872b82.tar.gz
poky-e92e8009a1589d1e049eb7b34038d644ec872b82.tar.bz2
poky-e92e8009a1589d1e049eb7b34038d644ec872b82.zip
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>
Diffstat (limited to 'bitbake/lib/prserv')
-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
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