diff options
| author | Antony Lesuisse <al@openerp.com> | 2012-12-18 15:03:11 +0100 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2012-12-18 15:03:11 +0100 |
| commit | 2a10c7b76b7da6aacd7cd6dfe188b2a218d0ba1d (patch) | |
| tree | 5ec1d1184c964ff1d2d974b3df09910a64fd6d9e /addons/document_webdav/webdav_server.py | |
| parent | ff7626229a2687ed85271c510ecc017e35634056 (diff) | |
| parent | 011b4f00456aeb1f2a51b2d607d9d53da9c2b5e2 (diff) | |
[MERGE] trunk
bzr revid: al@openerp.com-20121218140311-1rw9bqc1nwztfobb
Diffstat (limited to 'addons/document_webdav/webdav_server.py')
| -rw-r--r-- | addons/document_webdav/webdav_server.py | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index 70ad4d2657f..f801a56ee97 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -35,12 +35,21 @@ import logging -import netsvc +from openerp import netsvc from dav_fs import openerp_dav_handler -from tools.config import config -from DAV.WebDAVServer import DAVRequestHandler -from service import http_server -from service.websrv_lib import FixSendError, HttpOptions +from openerp.tools.config import config +try: + from pywebdav.lib.WebDAVServer import DAVRequestHandler + from pywebdav.lib.utils import IfParser, TagList + from pywebdav.lib.errors import DAV_Error, DAV_Forbidden, DAV_NotFound + from pywebdav.lib.propfind import PROPFIND +except ImportError: + from DAV.WebDAVServer import DAVRequestHandler + from DAV.utils import IfParser, TagList + from DAV.errors import DAV_Error, DAV_Forbidden, DAV_NotFound + from DAV.propfind import PROPFIND +from openerp.service import http_server +from openerp.service.websrv_lib import FixSendError, HttpOptions from BaseHTTPServer import BaseHTTPRequestHandler import urlparse import urllib @@ -48,9 +57,6 @@ import re import time from string import atoi import addons -from DAV.utils import IfParser, TagList -from DAV.errors import DAV_Error, DAV_Forbidden, DAV_NotFound -from DAV.propfind import PROPFIND # from DAV.constants import DAV_VERSION_1, DAV_VERSION_2 from xml.dom import minidom from redirect import RedirectHTTPHandler @@ -71,7 +77,7 @@ def OpenDAVConfig(**kw): return Config() -class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): +class DAVHandler(DAVRequestHandler, HttpOptions, FixSendError): verbose = False protocol_version = 'HTTP/1.1' @@ -88,7 +94,20 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): self._logger.debug(message) def handle(self): - self._init_buffer() + """Handle multiple requests if necessary.""" + self.close_connection = 1 + try: + self.handle_one_request() + while not self.close_connection: + self.handle_one_request() + except Exception as e: + try: + self.log_error("Request timed out: %r \n Trying old version of HTTPServer", e) + self._init_buffer() + except Exception as e: + #a read or a write timed out. Discard this connection + self.log_error("Not working neither, closing connection\n %r", e) + self.close_connection = 1 def finish(self): pass @@ -99,6 +118,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): return res def setup(self): + DAVRequestHandler.setup(self) self.davpath = '/'+config.get_misc('webdav','vdir','webdav') addr, port = self.server.server_name, self.server.server_port server_proto = getattr(self.server,'proto', 'http').lower() @@ -413,7 +433,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): data['lockowner'] = owners return data -from service.http_server import reg_http_service,OpenERPAuthProvider +from openerp.service.http_server import reg_http_service,OpenERPAuthProvider class DAVAuthProvider(OpenERPAuthProvider): def authenticate(self, db, user, passwd, client_address): |
