[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