Ticket #362 (new Defect)
Opened 5 months ago
carddav incorrect handling of xattrs on Debian Linux 5
| Reported by: | alex.stapleton@… | Owned by: | wsanchez@… |
|---|---|---|---|
| Priority: | 2: Expected | Milestone: | |
| Component: | Calendar Server | Severity: | Serious |
| Keywords: | carddav linux xattr | Cc: |
Description
Running ./run -a to get carddav running.
Logging in via HTTPS results in
Internal Server Error An error occurred rendering the requested page. More information is available in the server log.
From the logs you can see this exception…
2010-02-17 21:44:06+0000 [-] [caldav-0] Traceback (most recent call last): 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/internet/defer.py", line 184, in addCallbacks 2010-02-17 21:44:06+0000 [-] [caldav-0] self._runCallbacks() 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/internet/defer.py", line 326, in _runCallbacks 2010-02-17 21:44:06+0000 [-] [caldav-0] self.result = callback(self.result, *args, **kw) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/internet/defer.py", line 287, in _continue 2010-02-17 21:44:06+0000 [-] [caldav-0] self.unpause() 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/internet/defer.py", line 283, in unpause 2010-02-17 21:44:06+0000 [-] [caldav-0] self._runCallbacks() 2010-02-17 21:44:06+0000 [-] [caldav-0] --- <exception caught here> --- 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/internet/defer.py", line 326, in _runCallbacks 2010-02-17 21:44:06+0000 [-] [caldav-0] self.result = callback(self.result, *args, **kw) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/web2/dav/method/get.py", line 49, in <lambda> 2010-02-17 21:44:06+0000 [-] [caldav-0] d.addCallback(lambda _: super(twisted.web2.dav.static.DAVFile, self).http_GET(request)) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/web2/resource.py", line 128, in http_GET 2010-02-17 21:44:06+0000 [-] [caldav-0] return self.render(request) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/CalendarServer-trunk/twistedcaldav/extensions.py", line 798, in render 2010-02-17 21:44:06+0000 [-] [caldav-0] return self.renderDirectory(request) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/CalendarServer-trunk/twistedcaldav/extensions.py", line 873, in renderDirectory 2010-02-17 21:44:06+0000 [-] [caldav-0] d = self.renderDirectoryBody(request) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/CalendarServer-trunk/twistedcaldav/util.py", line 102, in wrapper 2010-02-17 21:44:06+0000 [-] [caldav-0] return f(*args, **kwargs) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/CalendarServer-trunk/twistedcaldav/extensions.py", line 893, in renderDirectoryBody 2010-02-17 21:44:06+0000 [-] [caldav-0] url, name, size, lastModified, contentType = self.getChildDirectoryEntry(child, name) 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/CalendarServer-trunk/twistedcaldav/extensions.py", line 1019, in getChildDirectoryEntry 2010-02-17 21:44:06+0000 [-] [caldav-0] contentType = child.contentType() 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/web2/dav/resource.py", line 521, in contentType 2010-02-17 21:44:06+0000 [-] [caldav-0] if self.hasDeadProperty((davxml.dav_namespace, "getcontenttype")): 2010-02-17 21:44:06+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/web2/dav/resource.py", line 476, in hasDeadProperty 2010-02-17 21:44:07+0000 [-] [caldav-0] return self.deadProperties().contains(qname) 2010-02-17 21:44:07+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/web2/dav/xattrprops.py", line 237, in contains2010-02-17 21:44:07+0000 [-] [caldav-0] statusForFailure(Failure()), 2010-02-17 21:44:07+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/web2/dav/http.py", line 310, in statusForFailure2010-02-17 21:44:07+0000 [-] [caldav-0] failure.raiseException() 2010-02-17 21:44:07+0000 [-] [caldav-0] File "/home/alexs/Twisted/twisted/web2/dav/xattrprops.py", line 229, in contains2010-02-17 21:44:07+0000 [-] [caldav-0] self.attrs.get(key)2010-02-17 21:44:07+0000 [-] [caldav-0] File "/home/alexs/xattr/build/lib.linux-i686-2.5/xattr/__init__.py", line 73, in get 2010-02-17 21:44:07+0000 [-] [caldav-0] return self._get(name, 0, 0, options | self.options)2010-02-17 21:44:07+0000 [-] [caldav-0] File "/home/alexs/xattr/build/lib.linux-i686-2.5/xattr/__init__.py", line 17, in _func 2010-02-17 21:44:07+0000 [-] [caldav-0] return func(first, *args)2010-02-17 21:44:07+0000 [-] [caldav-0] exceptions.IOError: [Errno 95] Operation not supported: '/home/alexs/CalendarServer-trunk/data/Documents/calendars'
I have reduced this somewhat by instrumenting the xattr library.
import xattr
xattr.getxattr("data/Documents/calendars","user.{DAV:}getcontenttype")
Will throw the same IOError.
Running caldav as root gets around this xattr problem but memcached doesn't run. (Which also breaks the server. No pages load.)
Note: See
TracTickets for help on using
tickets.
