Changeset 242367 in webkit


Ignore:
Timestamp:
Mar 4, 2019 11:54:21 AM (5 years ago)
Author:
achristensen@apple.com
Message:

REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
https://bugs.webkit.org/show_bug.cgi?id=194523

Reviewed by Ryosuke Niwa.

Attempt to work around a CFNetwork bug in the timing of tearing down tasks with upload streams.
See rdar://problem/28233746.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]):

Location:
trunk/Source/WebKit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r242364 r242367  
     12019-03-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
     4        https://bugs.webkit.org/show_bug.cgi?id=194523
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Attempt to work around a CFNetwork bug in the timing of tearing down tasks with upload streams.
     9        See rdar://problem/28233746.
     10
     11        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
     12        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
     13        (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
     14        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
     15        (-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]):
     16
    1172019-03-04  Carlos Garcia Campos  <cgarcia@igalia.com>
    218
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h

    r241317 r242367  
    8484    String description() const override;
    8585
     86    void setShouldExtendTaskLifetime(bool shouldExtendTaskLifetime) { m_shouldExtendTaskLifetime = shouldExtendTaskLifetime; }
     87
    8688private:
    8789    NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly, bool dataTaskIsForMainFrameNavigation, Optional<NetworkActivityTracker>);
     
    105107    uint64_t m_pageID;
    106108
     109    // FIXME: This is only needed until rdar://problem/28233746 is fixed.
     110    bool m_shouldExtendTaskLifetime { false };
     111
    107112#if ENABLE(RESOURCE_LOAD_STATISTICS)
    108113    bool m_hasBeenSetToUseStatelessCookieStorage { false };
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm

    r242304 r242367  
    262262        cocoaSession.m_dataTaskMapWithoutState.remove([m_task taskIdentifier]);
    263263    }
     264   
     265    if (m_shouldExtendTaskLifetime)
     266        RunLoop::main().dispatch([task = WTFMove(m_task)] { });
    264267}
    265268
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm

    r242106 r242367  
    384384    }
    385385
     386    networkDataTask->setShouldExtendTaskLifetime(true);
    386387    completionHandler(WebCore::createHTTPBodyNSInputStream(*body).get());
    387388}
Note: See TracChangeset for help on using the changeset viewer.