summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/server
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/server')
-rw-r--r--bitbake/lib/bb/server/xmlrpc.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py
index 6fc5543a80..d6f4338ae5 100644
--- a/bitbake/lib/bb/server/xmlrpc.py
+++ b/bitbake/lib/bb/server/xmlrpc.py
@@ -80,7 +80,7 @@ class BBTransport(xmlrpclib.Transport):
80 80
81def _create_server(host, port, timeout = 60): 81def _create_server(host, port, timeout = 60):
82 t = BBTransport(timeout) 82 t = BBTransport(timeout)
83 s = xmlrpclib.Server("http://%s:%d/" % (host, port), transport=t, allow_none=True) 83 s = xmlrpclib.ServerProxy("http://%s:%d/" % (host, port), transport=t, allow_none=True)
84 return s, t 84 return s, t
85 85
86class BitBakeServerCommands(): 86class BitBakeServerCommands():
@@ -253,9 +253,13 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer):
253 socktimeout = self.socket.gettimeout() or nextsleep 253 socktimeout = self.socket.gettimeout() or nextsleep
254 socktimeout = min(socktimeout, nextsleep) 254 socktimeout = min(socktimeout, nextsleep)
255 # Mirror what BaseServer handle_request would do 255 # Mirror what BaseServer handle_request would do
256 fd_sets = select.select(fds, [], [], socktimeout) 256 try:
257 if fd_sets[0] and self in fd_sets[0]: 257 fd_sets = select.select(fds, [], [], socktimeout)
258 self._handle_request_noblock() 258 if fd_sets[0] and self in fd_sets[0]:
259 self._handle_request_noblock()
260 except IOError:
261 # we ignore interrupted calls
262 pass
259 263
260 # Tell idle functions we're exiting 264 # Tell idle functions we're exiting
261 for function, data in self._idlefuns.items(): 265 for function, data in self._idlefuns.items():
@@ -346,7 +350,8 @@ class BitBakeXMLRPCClient(BitBakeBaseServer):
346 [host, port] = self.remote.split(":") 350 [host, port] = self.remote.split(":")
347 port = int(port) 351 port = int(port)
348 except Exception as e: 352 except Exception as e:
349 bb.fatal("Failed to read remote definition (%s)" % str(e)) 353 bb.warn("Failed to read remote definition (%s)" % str(e))
354 raise e
350 355
351 # We need our IP for the server connection. We get the IP 356 # We need our IP for the server connection. We get the IP
352 # by trying to connect with the server 357 # by trying to connect with the server
@@ -356,13 +361,15 @@ class BitBakeXMLRPCClient(BitBakeBaseServer):
356 ip = s.getsockname()[0] 361 ip = s.getsockname()[0]
357 s.close() 362 s.close()
358 except Exception as e: 363 except Exception as e:
359 bb.fatal("Could not create socket for %s:%s (%s)" % (host, port, str(e))) 364 bb.warn("Could not create socket for %s:%s (%s)" % (host, port, str(e)))
365 raise e
360 try: 366 try:
361 self.serverImpl = XMLRPCProxyServer(host, port) 367 self.serverImpl = XMLRPCProxyServer(host, port)
362 self.connection = BitBakeXMLRPCServerConnection(self.serverImpl, (ip, 0), self.observer_only, featureset) 368 self.connection = BitBakeXMLRPCServerConnection(self.serverImpl, (ip, 0), self.observer_only, featureset)
363 return self.connection.connect() 369 return self.connection.connect()
364 except Exception as e: 370 except Exception as e:
365 bb.fatal("Could not connect to server at %s:%s (%s)" % (host, port, str(e))) 371 bb.warn("Could not connect to server at %s:%s (%s)" % (host, port, str(e)))
372 raise e
366 373
367 def endSession(self): 374 def endSession(self):
368 self.connection.removeClient() 375 self.connection.removeClient()