diff options
| author | dle@openerp.com <> | 2012-12-12 19:24:13 +0100 |
|---|---|---|
| committer | dle@openerp.com <> | 2012-12-12 19:24:13 +0100 |
| commit | d2cc57ffb6ac20be79e856a21e939eef756f9153 (patch) | |
| tree | 2a2a2c24122524c15245a99433bb1968cfc90057 /addons/document_webdav | |
| parent | 0d168ae647fb2a1364af26ae468bf82e35dfa7de (diff) | |
[FIX]Copy colly of handle function of basehttpserver. Lucky guess
bzr revid: dle@openerp.com-20121212182413-kusxwx9g9qrg7jdv
Diffstat (limited to 'addons/document_webdav')
| -rw-r--r-- | addons/document_webdav/webdav_server.py | 42 |
1 files changed, 41 insertions, 1 deletions
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 |
