Closed Bug 1663399 Opened 4 years ago Closed 4 years ago

ICS calendars can't be set up anymore

Categories

(Calendar :: Provider: CalDAV, defect, P1)

Tracking

(thunderbird_esr78 unaffected, thunderbird82+ affected)

RESOLVED FIXED
83 Branch
Tracking Status
thunderbird_esr78 --- unaffected
thunderbird82 + affected

People

(Reporter: mkmelin, Assigned: pmorris)

References

(Regression)

Details

(Keywords: regression)

Attachments

(1 file)

As reported on #maildev, ICS calendars can't be subscribed to anymore. Super likely due to bug 306495.
E.g. the Thunderbird event calendar: https://calendar.google.com/calendar/ical/jgarvd0cmlt3599e7gthhk01a8%40group.calendar.google.com/public/basic.ics but I tried other ICS too and it's not possible to subscribe.

AFAIKT existing subscribed calendars still work.

The problem is the ICS calendar detection code tries various requests, including PROPFIND, HEAD, and PUT, but not a GET. Not all servers support HEAD, so the solution is to also try a GET request. That succeeds for e.g. the Thunderbird event calendar in the description above.

As Philipp mentioned on chat, ideally we could cancel the GET request after the headers were complete, since all we need for detection is the headers. I looked into this but couldn't figure out a way to do it, so I'm going ahead with a simple GET solution to fix the regression.

Try run in progress: https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=ae6e106803426423ec060176b2fde3870bde60fa

Adding "cancel GET request after headers" can be done as a follow-up improvement. Below are some notes about that.

How to cancel a request: https://searchfox.org/mozilla-central/source/netwerk/base/nsIRequest.idl#66

How to tell when the headers have been received is elusive, the closest thing seems to be via notificationCallbacks for the channel.

I looked at nsIProgressEventSink with its onStatus method: https://searchfox.org/mozilla-central/source/netwerk/base/nsIProgressEventSink.idl#68 but in the calendar code that's only a stub here: https://searchfox.org/comm-central/source/calendar/providers/ics/CalICSCalendar.jsm#1070 And Philipp mentioned that it doesn't take http into account, so not helpful for knowing when the headers are done.

Philipp also mentioned that there are "general http-on-examine-response observer notifications that might be usable as a hack, but they fire for all http requests".

Status: NEW → ASSIGNED
See Also: → 1666036

I doubt it's worth figuring out how to cancel the GET request. Once the network connection is set up and the data is being transferred, is any calendar going to be so large (especially after compression) that it makes a significant delay?

Target Milestone: --- → 83 Branch

Pushed by geoff@darktrojan.net:
https://hg.mozilla.org/comm-central/rev/b12d85b106ef
Fix detecting and setting up ICS calendars. r=darktrojan

Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: