[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