View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001483 | SOGo | Apple iPhone OS | public | 2011-11-02 15:04 | 2011-11-17 16:22 |
Reporter | Marcel | Assigned To | ludovic | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.3.9 | ||||
Target Version | 1.3.10 | Fixed in Version | 1.3.10 | ||
Summary | 0001483: CalDAV requests for URL-encoded UIDs with @ signs fail with 404 Not found | ||||
Description | When an iPhone (iOS5) receives CalDAV entries with @ signs in their UID-derived name as a result of PROPFIND (contenttype and getetag), it queries for them URL-encoded (in the REPORT request), i.e. @ is replaced by %40. SOGo does not seem to URL-decode the entries first, which results in iOS5 silently not displaying these entries. As the popular German calendar generator site www.project24.info creates UIDs of the form <whatever>@PROJECT24.INFO, these will all be ignored, which hit several of our users after upgrading to iOS5. ====== I also noticed another potential problem with generating the URLs from the UIDs: Dots (.) are silently removed. The URL for UID test@project24.info is /SOGo/dav/user/Calendar/test@project24info.ics . I would thus expect that the URLs for UIDs test@project24info and test@project24.info would clash, which will result in one of them being hidden by the other one, again resulting in what seems to be SOGo-generated data loss. Please consider no longer stripping the dots. | ||||
Additional Information | North American calendars with this problem can be downloaded from http://www.project24.info/holidays.php . Do not import them in the SOGo web frontend, as this (IMHO wrongly) replaces the UIDs with new random ones; instead, use a client which preserves UIDs (I used iCal). I have sent a tcpdump/wireshark trace to Ludovic, if you need further details. It is not included here as it contains some passwords which are hard to remove from such pcap traces. | ||||
Tags | No tags attached. | ||||
Since the URL handling behavior hasn't changed in SOGo for a little while, I suspect that what has changed is GNUstep behavior. We'll investigate. |
|
It does not necessarily need to be due to a change in SOGo/GNUstep URL handling. My uneducated guess would rather be that iOS5 takes some liberties (namely encoding @ as %40 in XML-TEXT contained URLs) that nobody else has dared to take until now. I also cannot judge whether this is within the limits set by the CalDAV standard or not. |
|
Please try these patches ASAP: # old_revision [77fbf2ff8bd28e88111c38f0575e8bc609e7b80f]# patch "sope-appserver/NGObjWeb/WebDAV/SoWebDAVRenderer.m"from [37cc4ed634049395b70d337724895cb72ba12049]to [8f4a5a2f02b5135c5b391a7c5b18d0ac2fc7ced8]#--- sope-appserver/NGObjWeb/WebDAV/SoWebDAVRenderer.m 37cc4ed634049395b70d337724895cb72ba12049
and: # old_revision [92cceaf860bbf56d983063471093858a3871ec23]# patch "Documentation/SOGo Native Microsoft Outlook Configuration.odt"from [82ab4d20c872dd1867b7deca0aa73cd1d65f200a]to [d720db599503853ecbdac227aa29b8a6018faa53]patch "SoObjects/SOGo/SOGoGCSFolder.m"from [00268a7356b2255bd9d593b990a0c053fbf3f7ee]to [d86dad2c0172303b993ae4cacb2d6418a43f18ec]#--- SoObjects/SOGo/SOGoGCSFolder.m 00268a7356b2255bd9d593b990a0c053fbf3f7ee [r appendFormat: @"<D:response><D:href>"];
@@ -2032,7 +2031,7 @@ static NSArray *childRecordFields = nil;
|
|
This does not work, iCal on MacOSX 10.6.8 complains about the server not having a calendar location (when adding this as new), iCal on iOS just ignores that calendar (when reactivating an existing configuration). This seems to be due to the fact that also the slashes have been URL-encoded and therefore no path can be found. The patch seems to address the outgoing URLs; however, I would expect the incoming URLs (as seen from the server) would need to be URL-decoded, at least in part, to get things working. *** Request: PROPFIND /SOGo/dav/pop91555/ HTTP/1.1 <?xml version="1.0" encoding="utf-8"?> *** Reply (XML formatted for readability; it does not seem to like the %2FSOGo%2Fdav%2Fpop91555%2F, expecting /SOGo/dav/pop91555/ instead): HTTP/1.1 207 Multi-Status <?xml version="1.0" encoding="utf-8"?> |
|
In my patch above, instead of doing: [r appendFormat: @"<D:response><D:href>"];
use: [r appendFormat: @"<D:response><D:href>"];
|
|
It is still encoding / to %2F, which iCal (likely not limited to them) does not like |
|
Ok, try those two patches: # old_revision [e38c570559610854b85c2c517053417779a76964]# patch "SoObjects/SOGo/SOGoGCSFolder.m"from [00268a7356b2255bd9d593b990a0c053fbf3f7ee]to [062164edd685f7699da1bfce2e10aba75177fa2d]#--- SoObjects/SOGo/SOGoGCSFolder.m 00268a7356b2255bd9d593b990a0c053fbf3f7ee [r appendFormat: @"<D:response><D:href>"];
and: # old_revision [d48f86f9609dac535dc37b591151381ac34b8227]# patch "sope-appserver/NGObjWeb/WebDAV/SoWebDAVRenderer.m"from [37cc4ed634049395b70d337724895cb72ba12049]to [b7ce043ab2e0a03d701adaf38afe075f34dd822d]#--- sope-appserver/NGObjWeb/WebDAV/SoWebDAVRenderer.m 37cc4ed634049395b70d337724895cb72ba12049
|
|
Great! After clearing the cache on the iPhone (deactivating/reactivating the account in Preferences), all the @-containing UIDs appear. Thanks! |
|
Fix pushed in SOPE and SOGo. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2011-11-02 15:04 | Marcel | New Issue | |
2011-11-09 13:34 | ludovic | Target Version | => 1.3.10 |
2011-11-09 13:38 | ludovic | Note Added: 0002982 | |
2011-11-10 10:47 | Marcel | Note Added: 0002984 | |
2011-11-16 16:18 | ludovic | Note Added: 0003020 | |
2011-11-17 11:03 | Marcel | Note Added: 0003029 | |
2011-11-17 11:14 | Marcel | Note Edited: 0003029 | |
2011-11-17 11:59 | ludovic | Note Added: 0003030 | |
2011-11-17 13:59 | Marcel | Note Added: 0003031 | |
2011-11-17 15:36 | ludovic | Note Added: 0003034 | |
2011-11-17 15:49 | Marcel | Note Added: 0003035 | |
2011-11-17 16:22 | ludovic | Note Added: 0003036 | |
2011-11-17 16:22 | ludovic | Status | new => resolved |
2011-11-17 16:22 | ludovic | Fixed in Version | => 1.3.10 |
2011-11-17 16:22 | ludovic | Resolution | open => fixed |
2011-11-17 16:22 | ludovic | Assigned To | => ludovic |
2011-11-17 16:22 | ludovic | Status | resolved => closed |