summaryrefslogtreecommitdiff
path: root/addons/document_webdav/webdav_server.py
diff options
context:
space:
mode:
authorP. Christeas <p_christ@hol.gr>2010-06-24 18:00:54 +0300
committerP. Christeas <p_christ@hol.gr>2010-06-24 18:00:54 +0300
commit665103115d21b7d5646c30b144bd8436b6ee9546 (patch)
tree70eab68501a71d78d4cd77c4ac11042911cbfe1d /addons/document_webdav/webdav_server.py
parent7921eca4c981aede3945273ce68d8be91dad304e (diff)
Doc WebDAV: workaround py-webdav for persistent connections.
Python-webdav does not follow the http protocol for persistent connections, nor does it accept patches. So, override their functions. bzr revid: p_christ@hol.gr-20100624150054-iwuvgehsyjr7qghv
Diffstat (limited to 'addons/document_webdav/webdav_server.py')
-rw-r--r--addons/document_webdav/webdav_server.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py
index c920c84ea72..4dec2eff0f4 100644
--- a/addons/document_webdav/webdav_server.py
+++ b/addons/document_webdav/webdav_server.py
@@ -33,6 +33,7 @@ from dav_fs import openerp_dav_handler
from tools.config import config
from DAV.WebDAVServer import DAVRequestHandler
from service.websrv_lib import HTTPDir,FixSendError
+from BaseHTTPServer import BaseHTTPRequestHandler
import urlparse
import urllib
from string import atoi,split
@@ -54,6 +55,7 @@ def OpenDAVConfig(**kw):
class DAVHandler(FixSendError,DAVRequestHandler):
verbose = False
+ protocol_version = 'HTTP/1.1'
def get_userinfo(self,user,pw):
return False
@@ -85,6 +87,17 @@ class DAVHandler(FixSendError,DAVRequestHandler):
def log_error(self, format, *args):
netsvc.Logger().notifyChannel('xmlrpc', netsvc.LOG_WARNING, format % args)
+ def send_response(self, code, message=None):
+ # the BufferingHttpServer will send Connection: close , while
+ # the BaseHTTPRequestHandler will only accept int code.
+ # workaround both of them.
+ BaseHTTPRequestHandler.send_response(self, int(code), message)
+
+ def send_header(self, key, value):
+ if key == 'Connection' and value == 'close':
+ self.close_connection = 1
+ DAVRequestHandler.send_header(self, key, value)
+
def do_PUT(self):
dc=self.IFACE_CLASS
uri=urlparse.urljoin(self.get_baseuri(dc), self.path)