[CalendarServer-dev] [Calendar and Contacts Server] #362: carddav incorrect handling of xattrs on Debian Linux 5
Calendar and Contacts Server
trac at macosforge.org
Wed Feb 17 13:59:21 PST 2010
#362: carddav incorrect handling of xattrs on Debian Linux 5
--------------------------------------+-------------------------------------
Reporter: alex.stapleton@… | Owner: wsanchez@…
Type: Defect | Status: new
Priority: 2: Expected | Milestone:
Component: Calendar Server | Severity: Serious
Keywords: carddav linux xattr |
--------------------------------------+-------------------------------------
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.)
--
Ticket URL: <http://trac.calendarserver.org/ticket/362>
Calendar and Contacts Server </>
HTTP/WebDAV/CalDAV Server
More information about the calendarserver-dev
mailing list