From 0d168ae647fb2a1364af26ae468bf82e35dfa7de Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Wed, 12 Dec 2012 18:42:32 +0100 Subject: [FIX] Wrong pywebdav lib import bzr revid: dle@openerp.com-20121212174232-5pnme7whe9yskrj7 --- addons/document_webdav/webdav_server.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'addons/document_webdav/webdav_server.py') diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index 70ad4d2657f..1dbad3510ca 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -38,7 +38,16 @@ import logging import netsvc from dav_fs import openerp_dav_handler from tools.config import config -from DAV.WebDAVServer import DAVRequestHandler +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 service import http_server from service.websrv_lib import FixSendError, HttpOptions from BaseHTTPServer import BaseHTTPRequestHandler @@ -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 -- cgit v1.2.3 From d2cc57ffb6ac20be79e856a21e939eef756f9153 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Wed, 12 Dec 2012 19:24:13 +0100 Subject: [FIX]Copy colly of handle function of basehttpserver. Lucky guess bzr revid: dle@openerp.com-20121212182413-kusxwx9g9qrg7jdv --- addons/document_webdav/webdav_server.py | 42 ++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'addons/document_webdav/webdav_server.py') diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index 1dbad3510ca..887c0bc1d03 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -93,8 +93,48 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): def _log(self, message): self._logger.debug(message) + def handle_one_request(self): + """Handle a single HTTP request. + + You normally don't need to override this method; see the class + __doc__ string for information on how to handle specific HTTP + commands such as GET and POST. + + """ + try: + self.raw_requestline = self.rfile.readline(65537) + if len(self.raw_requestline) > 65536: + self.requestline = '' + self.request_version = '' + self.command = '' + self.send_error(414) + return + if not self.raw_requestline: + self.close_connection = 1 + return + if not self.parse_request(): + # An error code has been sent, just exit + return + mname = 'do_' + self.command + if not hasattr(self, mname): + self.send_error(501, "Unsupported method (%r)" % self.command) + return + method = getattr(self, mname) + method() + self.wfile.flush() #actually send the response if not already done. + except Exception as e: + #a read or a write timed out. Discard this connection + self.log_error("Request timed out: %r", e) + self.close_connection = 1 + return + def handle(self): - self._init_buffer() + """Handle multiple requests if necessary.""" + self.close_connection = 1 + + self.handle_one_request() + while not self.close_connection: + self.handle_one_request() def finish(self): pass -- cgit v1.2.3 From 8256b41f0a440660895f3157b417ef20d3615961 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 13 Dec 2012 10:56:51 +0100 Subject: [FIX]Try to make things work on runbot bzr revid: dle@openerp.com-20121213095651-be2skhlkh0i4dlnz --- addons/document_webdav/webdav_server.py | 58 ++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 27 deletions(-) (limited to 'addons/document_webdav/webdav_server.py') diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index 887c0bc1d03..3d517f9e665 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -101,40 +101,44 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): commands such as GET and POST. """ - try: - self.raw_requestline = self.rfile.readline(65537) - if len(self.raw_requestline) > 65536: - self.requestline = '' - self.request_version = '' - self.command = '' - self.send_error(414) - return - if not self.raw_requestline: - self.close_connection = 1 - return - if not self.parse_request(): - # An error code has been sent, just exit - return - mname = 'do_' + self.command - if not hasattr(self, mname): - self.send_error(501, "Unsupported method (%r)" % self.command) - return - method = getattr(self, mname) - method() - self.wfile.flush() #actually send the response if not already done. - except Exception as e: - #a read or a write timed out. Discard this connection - self.log_error("Request timed out: %r", e) + self.raw_requestline = self.rfile.readline(65537) + if len(self.raw_requestline) > 65536: + self.requestline = '' + self.request_version = '' + self.command = '' + self.send_error(414) + return + if not self.raw_requestline: self.close_connection = 1 return + if not self.parse_request(): + # An error code has been sent, just exit + return + mname = 'do_' + self.command + if not hasattr(self, mname): + self.send_error(501, "Unsupported method (%r)" % self.command) + return + method = getattr(self, mname) + method() + self.wfile.flush() #actually send the response if not already done. + + return def handle(self): """Handle multiple requests if necessary.""" self.close_connection = 1 - - self.handle_one_request() - while not self.close_connection: + 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 -- cgit v1.2.3 From 3cce9d3569fe2507912c65d8dbe771166fc4ac55 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Thu, 13 Dec 2012 15:14:52 +0100 Subject: [DEL]handle_one_request useless bzr revid: dle@openerp.com-20121213141452-ts3a0xdcgo63pscg --- addons/document_webdav/webdav_server.py | 34 ++------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) (limited to 'addons/document_webdav/webdav_server.py') diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index 3d517f9e665..a23f1a0806b 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -77,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' @@ -93,37 +93,6 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): def _log(self, message): self._logger.debug(message) - def handle_one_request(self): - """Handle a single HTTP request. - - You normally don't need to override this method; see the class - __doc__ string for information on how to handle specific HTTP - commands such as GET and POST. - - """ - self.raw_requestline = self.rfile.readline(65537) - if len(self.raw_requestline) > 65536: - self.requestline = '' - self.request_version = '' - self.command = '' - self.send_error(414) - return - if not self.raw_requestline: - self.close_connection = 1 - return - if not self.parse_request(): - # An error code has been sent, just exit - return - mname = 'do_' + self.command - if not hasattr(self, mname): - self.send_error(501, "Unsupported method (%r)" % self.command) - return - method = getattr(self, mname) - method() - self.wfile.flush() #actually send the response if not already done. - - return - def handle(self): """Handle multiple requests if necessary.""" self.close_connection = 1 @@ -149,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() -- cgit v1.2.3