doc webdav: workaround bug in KHTML's PUT method.
This isn't our fault, but KDE is bound to remain broken for quite some time, we'd better support it. bzr revid: p_christ@hol.gr-20101103112604-78mdkva38dx1vm9k
This commit is contained in:
@@ -36,10 +36,13 @@ from service.websrv_lib import HTTPDir, FixSendError, HttpOptions
|
||||
from BaseHTTPServer import BaseHTTPRequestHandler
|
||||
import urlparse
|
||||
import urllib
|
||||
import re
|
||||
from string import atoi,split
|
||||
from DAV.errors import *
|
||||
# from DAV.constants import DAV_VERSION_1, DAV_VERSION_2
|
||||
|
||||
khtml_re = re.compile(r' KHTML/([0-9\.]+) ')
|
||||
|
||||
def OpenDAVConfig(**kw):
|
||||
class OpenDAV:
|
||||
def __init__(self, **kw):
|
||||
@@ -131,6 +134,16 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
|
||||
# the BufferingHttpServer will send Connection: close , while
|
||||
# the BaseHTTPRequestHandler will only accept int code.
|
||||
# workaround both of them.
|
||||
if self.command == 'PROPFIND' and int(code) == 404:
|
||||
kh = khtml_re.search(self.headers.get('User-Agent',''))
|
||||
if kh and (kh.group(1) < '4.5'):
|
||||
# There is an ugly bug in all khtml < 4.5.x, where the 404
|
||||
# response is treated as an immediate error, which would even
|
||||
# break the flow of a subsequent PUT request. At the same time,
|
||||
# the 200 response (rather than 207 with content) is treated
|
||||
# as "path not exist", so we send this instead
|
||||
# https://bugs.kde.org/show_bug.cgi?id=166081
|
||||
code = 200
|
||||
BaseHTTPRequestHandler.send_response(self, int(code), message)
|
||||
|
||||
def send_header(self, key, value):
|
||||
|
||||
Reference in New Issue
Block a user