summaryrefslogtreecommitdiff
path: root/bin/service/http_server.py
diff options
context:
space:
mode:
authorP. Christeas <p_christ@hol.gr>2009-08-31 16:29:56 +0300
committerP. Christeas <p_christ@hol.gr>2009-08-31 16:29:56 +0300
commit0a838fba3aab924cdac524d27fcc22dee9e91c20 (patch)
tree4afa2b2edb530ab7cbf7232f42ef3a7aa05753a6 /bin/service/http_server.py
parenta267ef5d05e952df01e7f74c321ce77ae33a76ff (diff)
Fix https transports, certificates etc.
Now we can serve https: the send_error() must be fixed so that content-lenth is specified, certificates are configurable and connections get properly shutdown so that the client won't wait forever. bzr revid: p_christ@hol.gr-20090831132956-00atxsfcy3qkdw4j
Diffstat (limited to 'bin/service/http_server.py')
-rw-r--r--bin/service/http_server.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/bin/service/http_server.py b/bin/service/http_server.py
index 76cf5b2fc91..74a0f572771 100644
--- a/bin/service/http_server.py
+++ b/bin/service/http_server.py
@@ -88,6 +88,12 @@ class SecureMultiHandler2(SecureMultiHTTPHandler):
def log_message(self, format, *args):
netsvc.Logger().notifyChannel('https',netsvc.LOG_DEBUG,format % args)
+ def getcert_fnames(self):
+ tc = tools.config
+ fcert = tc.get_misc('httpsd','sslcert', 'ssl/server.cert')
+ fkey = tc.get_misc('httpsd','sslkey', 'ssl/server.key')
+ return (fcert,fkey)
+
class HttpDaemon(threading.Thread, netsvc.Server):
def __init__(self, interface, port):
threading.Thread.__init__(self)
@@ -141,6 +147,23 @@ class HttpSDaemon(threading.Thread, netsvc.Server):
netsvc.Logger().notifyChannel('httpd-ssl', netsvc.LOG_CRITICAL, "Error occur when starting the server daemon: %s" % (e,))
raise
+ def attach(self, path, gw):
+ pass
+
+ def stop(self):
+ self.running = False
+ if os.name != 'nt':
+ self.server.socket.shutdown( hasattr(socket, 'SHUT_RDWR') and socket.SHUT_RDWR or 2 )
+ self.server.socket.close()
+
+ def run(self):
+ #self.server.register_introspection_functions()
+
+ self.running = True
+ while self.running:
+ self.server.handle_request()
+ return True
+
httpd = None
httpsd = None
@@ -175,7 +198,7 @@ def reg_http_service(hts, secure_only = False):
return
import SimpleXMLRPCServer
-class XMLRPCRequestHandler(netsvc.OpenERPDispatcher,SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
+class XMLRPCRequestHandler(netsvc.OpenERPDispatcher,FixSendError,SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
rpc_paths = []
protocol_version = 'HTTP/1.1'
def _dispatch(self, method, params):