[CalendarServer-changes] [350]
CalendarServer/trunk/lib-patches/Twisted/twisted.web2.server.patch
source_changes at macosforge.org
source_changes at macosforge.org
Thu Nov 2 08:45:35 PST 2006
Revision: 350
http://trac.macosforge.org/projects/calendarserver/changeset/350
Author: cdaboo at apple.com
Date: 2006-11-02 08:45:35 -0800 (Thu, 02 Nov 2006)
Log Message:
-----------
Fix for ticket #78.
Modified Paths:
--------------
CalendarServer/trunk/lib-patches/Twisted/twisted.web2.server.patch
Modified: CalendarServer/trunk/lib-patches/Twisted/twisted.web2.server.patch
===================================================================
--- CalendarServer/trunk/lib-patches/Twisted/twisted.web2.server.patch 2006-11-02 15:43:51 UTC (rev 349)
+++ CalendarServer/trunk/lib-patches/Twisted/twisted.web2.server.patch 2006-11-02 16:45:35 UTC (rev 350)
@@ -2,16 +2,23 @@
===================================================================
--- twisted/web2/server.py (revision 18545)
+++ twisted/web2/server.py (working copy)
-@@ -1,6 +1,8 @@
- # -*- test-case-name: twisted.web2.test.test_server -*-
- # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
- # See LICENSE for details.
+@@ -19,6 +19,7 @@
+ from zope.interface import implements
+ # Twisted Imports
+ from twisted.internet import defer
+from twisted.internet.defer import succeed
+ from twisted.python import log, failure
+
+ # Sibling Imports
+@@ -26,6 +27,7 @@
+ from twisted.web2 import http_headers
+ from twisted.web2.filter.range import rangefilter
+ from twisted.web2 import error
+from twisted.web2.dav.util import joinURL
-
- """This is a web-sever which integrates with the twisted.internet
-@@ -150,17 +152,32 @@
+ from twisted.web2 import version as web2_version
+ from twisted import __version__ as twisted_version
+@@ -150,6 +152,9 @@
self._initialprepath = kw['prepathuri']
del kw['prepathuri']
@@ -21,6 +28,7 @@
# Copy response filters from the class
self.responseFilters = self.responseFilters[:]
self.files = {}
+@@ -156,11 +161,23 @@
self.resources = []
http.Request.__init__(self, *args, **kw)
@@ -51,7 +59,7 @@
d = defer.Deferred()
d.addCallback(self._getChild, self.site.resource, self.postpath)
-+ d.addCallback(self._rememberResource, "/" + "/".join(self.prepath))
++ d.addCallback(self._rememberResource, "/" + "/".join(self.postpath))
d.addCallback(lambda res, req: res.renderHTTP(req), self)
d.addCallback(self._cbFinishRender)
d.addErrback(self._processingFailed)
@@ -98,22 +106,21 @@
def locateResource(self, url):
"""
-@@ -385,8 +397,13 @@
+@@ -385,7 +397,12 @@
The contained response will have a status code of
L{responsecode.BAD_REQUEST}.
"""
- if url is None: return None
+ if url is None:
+ return None
-
++
+ cached = self._urlsByResource.get(url, None)
+ if cached is not None:
+ return succeed(cached)
-+
+
#
# Parse the URL
- #
-@@ -406,19 +423,62 @@
+@@ -406,10 +423,50 @@
"URL is not on this site (%s://%s/): %s" % (scheme, self.headers.getHeader("host"), url)
))
@@ -122,20 +129,18 @@
assert segments[0] == "", "URL path didn't begin with '/': %s" % (path,)
segments = segments[1:]
- segments = map(unquote, segments)
-
- def notFound(f):
- f.trap(http.HTTPError)
- if f.response.code != responsecode.NOT_FOUND:
-- raise f
++
++ def notFound(f):
++ f.trap(http.HTTPError)
++ if f.response.code != responsecode.NOT_FOUND:
+ return f
- return None
-
-- return defer.maybeDeferred(self._getChild, None, self.site.resource, segments, updatepaths=False)
++ return None
++
+ d = defer.maybeDeferred(self._getChild, None, self.site.resource, segments, updatepaths=False)
+ d.addCallback(self._rememberResource, path)
+ d.addErrback(notFound)
+ return d
-
++
+ def locateChildResource(self, parent, child_name):
+ """
+ Looks up the child resource with the given name given the parent
@@ -165,18 +170,22 @@
+ assert "/" not in child_name, "Child name may not contain '/': %s" % (child_name,)
+
+ segment = unquote(child_name)
-+
-+ def notFound(f):
-+ f.trap(http.HTTPError)
-+ if f.response.code != responsecode.NOT_FOUND:
+
+ def notFound(f):
+ f.trap(http.HTTPError)
+@@ -414,10 +471,13 @@
+ def notFound(f):
+ f.trap(http.HTTPError)
+ if f.response.code != responsecode.NOT_FOUND:
+- raise f
+ return f
-+ return None
-+
+ return None
+
+- return defer.maybeDeferred(self._getChild, None, self.site.resource, segments, updatepaths=False)
+ d = defer.maybeDeferred(self._getChild, None, parent, [segment], updatepaths=False)
+ d.addCallback(self._rememberResource, url)
+ d.addErrback(notFound)
+ return d
-+
+
def _processingFailed(self, reason):
if reason.check(http.HTTPError) is not None:
- # If the exception was an HTTPError, leave it alone
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061102/7f5e93db/attachment.html
More information about the calendarserver-changes
mailing list