• commit-queue@webkit.org's avatar
    EventSource: Synchronous loader callback not handled properly · 94db5341
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=115104
    
    Source/WebCore:
    
    When attempting a cross-origin request towards a non-HTTP URL, an early verification
    of the protocol scheme will cause didFailAccessControlCheck to be called synchronously
    before the loader has even finished being created. This special case was not handled
    properly, since we tried to cancel a non-existing loader, which resulted in a crash.
    In addition to checking whether a request is in flight before trying to cancel it,
    this change also schedules the initial creation of the loader to happen asynchronously
    when an EventSource is constructed, so that a script can register for the error event
    before it is dispatched (as a result of passing a non-HTTP URL to the constructor).
    
    Patch by Per-Erik Brodin <per-erik.brodin@ericsson.com> on 2013-04-25
    Reviewed by Alexey Proskuryakov.
    
    Test: http/tests/eventsource/eventsource-cors-non-http.html
    
    * page/EventSource.cpp:
    (WebCore::EventSource::EventSource):
    (WebCore::EventSource::create):
    (WebCore::EventSource::scheduleInitialConnect):
    (WebCore):
    (WebCore::EventSource::scheduleReconnect):
    (WebCore::EventSource::connectTimerFired):
    (WebCore::EventSource::close):
    (WebCore::EventSource::abortConnectionAttempt):
    * page/EventSource.h:
    (EventSource):
    
    LayoutTests:
    
    Patch by Per-Erik Brodin <per-erik.brodin@ericsson.com> on 2013-04-25
    Reviewed by Alexey Proskuryakov.
    
    * http/tests/eventsource/eventsource-cors-non-http-expected.txt: Added.
    * http/tests/eventsource/eventsource-cors-non-http.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149098 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    94db5341
EventSource.h 4.41 KB