2014-10-08 2 views
0

SyncEvolution 사용자가 Google 캘린더에서 로컬 캘린더 미러링과 관련된 문제를보고했습니다. CalDAV를 통해 Google 캘린더를 새로 고침 (모든 이벤트를 삭제하고 PUT으로 다시 작성)하면 일부 PUT 명령이 "404 찾을 수 없음" .Google 캘린더 : 회의 다시 만들기

ORGANIZER (즉, 회의)가있는 VEVENT의 경우는 이렇게 보입니다. ORGANIZER가없는 간단한 VEVENT에 적합합니다. 아래의 실패 사례.

나는 이것이 Google CalDAV의 알려진 제한이라고 생각합니다. 문제는 클라이언트 또는 서버에서이 사용 사례를 지원하기 위해 수행 할 수있는 작업은 무엇입니까?

클라이언트에서 해결 방법을 생각할 수 없습니다. 404 오류는 해결 방법을 유발하기에는 너무 명확하지 않으며 클라이언트가 근본 원인을 탐지 할 수 있다고하더라도 실패한 PUT보다 이벤트를 재생성하는 다른 방법은 없습니다.


PUT /caldav/v2/patrick.ohly.estamos%40googlemail.com/events/4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz.ics HTTP/1.1 
Connection: TE 
TE: trailers 
Host: apidata.googleusercontent.com 
Content-Length: 928 
Content-Type: text/calendar; charset=utf-8 
User-Agent: SyncEvolution 
Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

Sending request-line and headers: 
Sending request body: 
Body block (928 bytes): 
[BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//Synthesis AG//NONSGML SyncML Engine V3.4.0.47//EN 
BEGIN:VTIMEZONE 
TZID:America/Los_Angeles 
BEGIN:STANDARD 
DTSTART:20071104T020000 
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SU 
TZOFFSETFROM:-0700 
TZOFFSETTO:-0800 
TZNAME:HNP 
END:STANDARD 
BEGIN:DAYLIGHT 
DTSTART:20070311T020000 
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=2SU 
TZOFFSETFROM:-0800 
TZOFFSETTO:-0700 
TZNAME:HAP 
END:DAYLIGHT 
END:VTIMEZONE 
BEGIN:VEVENT 
STATUS:CONFIRMED 
LAST-MODIFIED:20120813T184814Z 
DTSTAMP:20120813T184814Z 
UID:4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz 
SEQUENCE:0 
CLASS:PUBLIC 
TRANSP:OPAQUE 
SUMMARY:test event 
DTSTART;TZID=America/Los_Angeles:20120815T103000 
DTEND;TZID=America/Los_Angeles:20120815T113000 
ATTENDEE;CN=John Doe;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE: 
mailto:[email protected] 
ORGANIZER;CN=Joan Doe:mailto:[email protected] 
END:VEVENT 
END:VCALENDAR 
] 
Request sent; retry is 1. 
[status-line] < HTTP/1.1 201 Created 

... 

DELETE /caldav/v2/patrick.ohly.estamos%40googlemail.com/events/4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz.ics HTTP/1.1 
Connection: TE 
TE: trailers 
Host: apidata.googleusercontent.com 
Content-Length: 0 
User-Agent: SyncEvolution 
Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

Sending request-line and headers: 
Request sent; retry is 1. 
[status-line] < HTTP/1.1 204 No Content 

... 

PUT /caldav/v2/patrick.ohly.estamos%40googlemail.com/events/4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz.ics HTTP/1.1 
Connection: TE 
TE: trailers 
Host: apidata.googleusercontent.com 
Content-Length: 928 
Content-Type: text/calendar; charset=utf-8 
User-Agent: SyncEvolution 
Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

Sending request-line and headers: 
Sending request body: 
Body block (928 bytes): 
[BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//Synthesis AG//NONSGML SyncML Engine V3.4.0.47//EN 
BEGIN:VTIMEZONE 
TZID:America/Los_Angeles 
BEGIN:STANDARD 
DTSTART:20071104T020000 
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SU 
TZOFFSETFROM:-0700 
TZOFFSETTO:-0800 
TZNAME:HNP 
END:STANDARD 
BEGIN:DAYLIGHT 
DTSTART:20070311T020000 
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=2SU 
TZOFFSETFROM:-0800 
TZOFFSETTO:-0700 
TZNAME:HAP 
END:DAYLIGHT 
END:VTIMEZONE 
BEGIN:VEVENT 
STATUS:CONFIRMED 
LAST-MODIFIED:20120813T184814Z 
DTSTAMP:20120813T184814Z 
UID:4fbbdbd8-c9de-4ce0-810a-01e3a438a35d-pohly-xyz 
SEQUENCE:0 
CLASS:PUBLIC 
TRANSP:OPAQUE 
SUMMARY:test event 
DTSTART;TZID=America/Los_Angeles:20120815T103000 
DTEND;TZID=America/Los_Angeles:20120815T113000 
ATTENDEE;CN=John Doe;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE: 
mailto:[email protected] 
ORGANIZER;CN=Joan Doe:mailto:[email protected] 
END:VEVENT 
END:VCALENDAR 
] 
Request sent; retry is 1. 
[status-line] < HTTP/1.1 404 Not Found 
+0

안녕 패트릭 (이벤트가 연결되지 않은 중복되고, 그 결과), 당신이 사용할 수있는 해결 방법은 참석자로 사용자를 추가하는 것입니다. – luc

답변

0

(나는 만족스러운 답변이 확실하지 않다. 나는 SyncEvolution에 대해 잘 모르겠지만, 아마도 내가 구글 캘린더와 함께이 최근의 경험이 되거 수 있습니다.)

이는 DELETE가 없어도 문제가 될 수 있습니다.

사용자 U는 참석자가 있지만 U는 주최자가 아닌 이벤트를 푸터한다고 가정합니다. U가 이벤트를 "훔쳐"(주최자가 됨) 다른 모든 사람의 일정에 이벤트의 읽기 전용 복사본을 삽입한다는 것은 발생합니다. 참고 : 참석자가있는 일정의 경우 Google 캘린더는 소유자/작성자/삽입자를 구성자로 지정합니다. UID는 처음 언급 된 ATTENDEE가 UID를 "보유"합니다. Google 캘린더에는 중복 된 UID가 없으므로 다른 참석자가 이후 PUT에서 오류가 발생합니다.

이벤트가 하나의 캘린더에서 삭제되고 (전체가 아님) 누군가가 UID를 계속 "소유"하는 경우에는 더욱 악화됩니다. 또는 삭제가 실제로 UID (Google 캘린더에서 발생할 수 있음)를 실제로 제거하지는 않습니다.

완화 전략 :

주최자와 이벤트의

만 주최자의 일정에 넣어.

어떻게 든 독특한는-쓸어 위를 달성 할 수없는 경우 UUID를

관련 문제