[Oval-commits] r277 - in trunk/oval-server: . oval/server

Pavel Vinogradov blaze-guest at alioth.debian.org
Sun Oct 14 20:01:20 UTC 2007


Author: blaze-guest
Date: 2007-10-14 20:01:20 +0000 (Sun, 14 Oct 2007)
New Revision: 277

Modified:
   trunk/oval-server/OvalServer.BUGS
   trunk/oval-server/oval-server.py
   trunk/oval-server/oval/server/OvalHttpServer.py
Log:
Some fixes for Ctrl+C handling (only partially).

Modified: trunk/oval-server/OvalServer.BUGS
===================================================================
--- trunk/oval-server/OvalServer.BUGS	2007-10-05 17:55:18 UTC (rev 276)
+++ trunk/oval-server/OvalServer.BUGS	2007-10-14 20:01:20 UTC (rev 277)
@@ -1,6 +1,8 @@
-CTRL+C don't kill server
-Fix UTC/Local time in timestamps
-Uses the same user as the agent, should be different
-Set the umask or log permissions properly. This is not correct:
+- CTRL+C don't kill server
+  Server will stop only after client request. Because HttpThread
+  locked in handle_response() and can't be terminated until release lock.
+- Fix UTC/Local time in timestamps
+- Uses the same user as the agent, should be different
+- Set the umask or log permissions properly. This is not correct:
   -rwxrwxr-x 1 root oval 1241 2007-09-05 00:42 oval-server.log
 

Modified: trunk/oval-server/oval/server/OvalHttpServer.py
===================================================================
--- trunk/oval-server/oval/server/OvalHttpServer.py	2007-10-05 17:55:18 UTC (rev 276)
+++ trunk/oval-server/oval/server/OvalHttpServer.py	2007-10-14 20:01:20 UTC (rev 277)
@@ -66,6 +66,8 @@
 
 class OvalHttpServer (BaseHTTPServer.HTTPServer):
 	
+	__status = None
+	
 	def __init__(self, conf, handler, workdir, logger = None):
 		BaseHTTPServer.HTTPServer.__init__ (self, conf, handler)
 		self.workdir = workdir
@@ -79,10 +81,14 @@
 		"""Handle one request at a time until stopped."""
 		self.logger.info ('httpServer: Start request handling')
 		
-		self.stop = False
-		while not self.stop:
+		self.__status = True	
+		while self.__status:
 			self.handle_request()
+		self.logger.debug ('httpServer: Shutdown')
 			
+	def stop(self):
+		self.__status = False
+			
 class OvalHttpsServer (OvalHttpServer):
 	"""http server that reacts to self.stop flag"""
 	

Modified: trunk/oval-server/oval-server.py
===================================================================
--- trunk/oval-server/oval-server.py	2007-10-05 17:55:18 UTC (rev 276)
+++ trunk/oval-server/oval-server.py	2007-10-14 20:01:20 UTC (rev 277)
@@ -28,13 +28,11 @@
 \t-c\tpath to config file (by default /etc/oval/server.conf""" % prog
 
 
-class httpThread(Thread):
+class httpThread(Thread):	
 	
-	__status = None
-	
 	def __init__ (self, config, logger):
 		Thread.__init__(self)
-		
+		self.setName("httpThredad")
 		self.type = config['type']
 		self.ip = config['ip']
 		self.port = int(config['port'])
@@ -49,12 +47,11 @@
 		else:
 			raise OvalServerNotSupported()
 		
-	def run (self):
-		self.__status = 1
+	def run (self):		
 		self.server.serve_forever()
 		
 	def stop (self):
-		self.__status = None
+		self.server.stop()
 		
 class syncThread(Thread):
 	
@@ -62,6 +59,7 @@
 	
 	def __init__(self, config, logger):
 		Thread.__init__(self)
+		self.setName("syncThread")
 		
 		self.type = config['type']
 		self.source = config['source']
@@ -106,6 +104,7 @@
 				time.sleep(60 * self.update_interval)
 			except Exception, e:
 				self.logger.critical ('Unhandled error in Syncer thread: %s : %s.\n' % (e.__class__, str(e)))
+		self.logger.debug('syncThread: Shutdown')
 
 	def stop(self):
 				self.__status = None
@@ -184,15 +183,16 @@
 			server.start()
 			
 			#Wait all Threads
-			syncer.join()
-			server.join()	
+			while syncer.isAlive() or server.isAlive():
+				syncer.join(10)
+				server.join(10)	
 		except KeyboardInterrupt, e:
 			syncer.stop()
 			server.stop()
 			sys.stderr.write ('Execution interrupted by keyboard.')
 				
 		self.logger.info('Shutting down')
-		logging.shutdown()
+		logging.shutdown()		
 		
 if __name__ == "__main__":
 	#Parse command line options. 
@@ -216,6 +216,7 @@
 	try:
 		main = mainThread(opts['-c'])
 		main.run ()
+		
 	except configNotFoundError, e:
 		sys.stderr.write (str(e))
 	except KeyboardInterrupt, e:




More information about the Oval-commits mailing list