View Issue Details

IDProjectCategoryView StatusLast Update
0002655SOGo Connectorwith external serverpublic2014-03-13 04:50
Reporterbrotherli Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status newResolutionopen 
Product Version24.0.4 
Summary0002655: Invalid parameters in REPORT with addressbook-query
Description

When searching on a read-only CardDAV resource in Thunderbird's address book, the submitted <C:addressbook-query> block contains bogus parameters that make searches fail on external CardDAV servers (e.g. SabreDAV). The submitted request body looks as follows:

<?xml version="1.0" encoding="UTF-8"?>
<C:addressbook-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
<D:prop>
<D:getetag/>
<C:address-data/>
</D:prop>
<C:filter>
<C:prop-filter name="mail">
<C:text-match collation="i;unicasemap" match-type="starts-with">user</C:text-match>
</C:prop-filter>
</C:filter>
</C:addressbook-query>

There are two major errors in this:

  1. <C:prop-filter name="mail">

The prop-filter node should refer to a vCard property to be matched against. "mail" isn't a valid property and should be "EMAIL" instead.

  1. <C:text-match collation="i;unicasemap" ..>

The collation "i;unicasemap" is non-standard and can be rejected by server that stay strict with RFC 6352. This should probably be "i;unicode-casemap" according to RFC 5051.

And two more suggestions for improvement:

  1. match-type="starts-with" should be replaced with "contains" for substring matching as already suggested in issue 0000017.

  2. The criteria option in Thunderbird says "Name or Email" but the request only queries in the email (i.e. "mail") property. Add a second prop-filter node for property "FN" to meet the user's expectations.

A fully functional REPORT request would look like this:

<?xml version="1.0" encoding="UTF-8"?>
<C:addressbook-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
<D:prop>
<D:getetag/>
<C:address-data/>
</D:prop>
<C:filter test="anyof">
<C:prop-filter name="FN">
<C:text-match collation="i;unicode-casemap" match-type="contains">foo</C:text-match>
</C:prop-filter>
<C:prop-filter name="EMAIL">
<C:text-match collation="i;unicode-casemap" match-type="contains">foo</C:text-match>
</C:prop-filter>
</C:filter>
</C:addressbook-query>

TagsNo tags attached.

Relationships

related to 0000017 resolvedwsourdeau match-type in REPORT query 

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2014-03-12 10:31 brotherli New Issue
2014-03-13 04:50 Christian Mack Relationship added related to 0000017