summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/server/xmlrpc.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/server/xmlrpc.py')
-rw-r--r--bitbake/lib/bb/server/xmlrpc.py26
1 files changed, 12 insertions, 14 deletions
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py
index 641e15e833..cca569d0e9 100644
--- a/bitbake/lib/bb/server/xmlrpc.py
+++ b/bitbake/lib/bb/server/xmlrpc.py
@@ -264,12 +264,9 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer):
264 Serve Requests. Overloaded to honor a quit command 264 Serve Requests. Overloaded to honor a quit command
265 """ 265 """
266 self.quit = False 266 self.quit = False
267 self.timeout = 0 # Run Idle calls for our first callback
268 while not self.quit: 267 while not self.quit:
269 #print "Idle queue length %s" % len(self._idlefuns) 268 fds = [self]
270 self.handle_request() 269 nextsleep = 0.1
271 #print "Idle timeout, running idle functions"
272 nextsleep = None
273 for function, data in self._idlefuns.items(): 270 for function, data in self._idlefuns.items():
274 try: 271 try:
275 retval = function(self, data, False) 272 retval = function(self, data, False)
@@ -277,21 +274,22 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer):
277 del self._idlefuns[function] 274 del self._idlefuns[function]
278 elif retval is True: 275 elif retval is True:
279 nextsleep = 0 276 nextsleep = 0
280 elif nextsleep is 0: 277 else:
281 continue 278 fds = fds + retval
282 elif nextsleep is None:
283 nextsleep = retval
284 elif retval < nextsleep:
285 nextsleep = retval
286 except SystemExit: 279 except SystemExit:
287 raise 280 raise
288 except: 281 except:
289 import traceback 282 import traceback
290 traceback.print_exc() 283 traceback.print_exc()
291 pass 284 pass
292 if nextsleep is None and len(self._idlefuns) > 0: 285
293 nextsleep = 0 286 socktimeout = self.socket.gettimeout() or nextsleep
294 self.timeout = nextsleep 287 socktimeout = min(socktimeout, nextsleep)
288 # Mirror what BaseServer handle_request would do
289 fd_sets = select.select(fds, [], [], socktimeout)
290 if fd_sets[0] and self in fd_sets[0]:
291 self._handle_request_noblock()
292
295 # Tell idle functions we're exiting 293 # Tell idle functions we're exiting
296 for function, data in self._idlefuns.items(): 294 for function, data in self._idlefuns.items():
297 try: 295 try: