Changeset 227237 in webkit


Ignore:
Timestamp:
Jan 19, 2018 2:33:51 PM (6 years ago)
Author:
commit-queue@webkit.org
Message:

[Curl] Add timeout support to XMLHttpRequest
https://bugs.webkit.org/show_bug.cgi?id=181876

Patch by Basuke Suzuki <Basuke Suzuki> on 2018-01-19
Reviewed by Alex Christensen

  • platform/network/ResourceRequestBase.cpp:
  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::setTimeout):

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::didCompleteTransfer):

  • platform/network/curl/ResourceError.h:
  • platform/network/curl/ResourceErrorCurl.cpp:

(WebCore::ResourceError::httpError):

Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r227235 r227237  
     12018-01-19  Basuke Suzuki  <Basuke.Suzuki@sony.com>
     2
     3        [Curl] Add timeout support to XMLHttpRequest
     4        https://bugs.webkit.org/show_bug.cgi?id=181876
     5
     6        Reviewed by Alex Christensen
     7
     8        * platform/network/ResourceRequestBase.cpp:
     9        * platform/network/curl/CurlContext.cpp:
     10        (WebCore::CurlHandle::setTimeout):
     11        * platform/network/curl/CurlContext.h:
     12        * platform/network/curl/CurlRequest.cpp:
     13        (WebCore::CurlRequest::setupTransfer):
     14        (WebCore::CurlRequest::didCompleteTransfer):
     15        * platform/network/curl/ResourceError.h:
     16        * platform/network/curl/ResourceErrorCurl.cpp:
     17        (WebCore::ResourceError::httpError):
     18
    1192018-01-19  Yoav Weiss  <yoav@yoav.ws>
    220
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp

    r227205 r227237  
    3434namespace WebCore {
    3535
    36 #if !USE(SOUP) && (!PLATFORM(MAC) || USE(CFURLCONNECTION))
     36#if PLATFORM(IOS) || USE(CFURLCONNECTION)
    3737double ResourceRequestBase::s_defaultTimeoutInterval = INT_MAX;
    3838#else
  • trunk/Source/WebCore/platform/network/curl/CurlContext.cpp

    r226954 r227237  
    521521}
    522522
     523void CurlHandle::setTimeout(long timeoutMilliseconds)
     524{
     525    curl_easy_setopt(m_handle, CURLOPT_TIMEOUT_MS, timeoutMilliseconds);
     526}
     527
    523528void CurlHandle::setHeaderCallbackFunction(curl_write_callback callbackFunc, void* userData)
    524529{
  • trunk/Source/WebCore/platform/network/curl/CurlContext.h

    r226954 r227237  
    264264
    265265    void enableTimeout();
     266    void setTimeout(long timeoutMilliseconds);
    266267
    267268    // Callback function
  • trunk/Source/WebCore/platform/network/curl/CurlRequest.cpp

    r226800 r227237  
    193193    m_curlHandle->enableTimeout();
    194194
     195    long timeoutMilliseconds = (m_request.timeoutInterval() > 0.0) ? static_cast<long>(m_request.timeoutInterval() * 1000.0) : 0;
     196    m_curlHandle->setTimeout(timeoutMilliseconds);
     197
    195198    m_curlHandle->enableProxyIfExists();
    196199    m_curlHandle->enableCookieJarIfExists();
     
    422425        }
    423426    } else {
    424         auto resourceError = ResourceError::httpError(result, m_request.url());
     427        auto type = (result == CURLE_OPERATION_TIMEDOUT && m_request.timeoutInterval() > 0.0) ? ResourceError::Type::Timeout : ResourceError::Type::General;
     428        auto resourceError = ResourceError::httpError(result, m_request.url(), type);
    425429        if (m_sslVerifier.sslErrors())
    426430            resourceError.setSslErrors(m_sslVerifier.sslErrors());
  • trunk/Source/WebCore/platform/network/curl/ResourceError.h

    r223752 r227237  
    4545    }
    4646
    47     static ResourceError httpError(int errorCode, const URL& failingURL);
     47    static ResourceError httpError(int errorCode, const URL& failingURL, Type = Type::General);
    4848    static ResourceError sslError(int errorCode, unsigned sslErrors, const URL& failingURL);
    4949
  • trunk/Source/WebCore/platform/network/curl/ResourceErrorCurl.cpp

    r222187 r227237  
    3535const char* const ResourceError::curlErrorDomain = "CurlErrorDomain";
    3636
    37 ResourceError ResourceError::httpError(int errorCode, const URL& failingURL)
     37ResourceError ResourceError::httpError(int errorCode, const URL& failingURL, Type type)
    3838{
    39     return ResourceError(curlErrorDomain, errorCode, failingURL, CurlHandle::errorDescription(static_cast<CURLcode>(errorCode)));
     39    return ResourceError(curlErrorDomain, errorCode, failingURL, CurlHandle::errorDescription(static_cast<CURLcode>(errorCode)), type);
    4040}
    4141
Note: See TracChangeset for help on using the changeset viewer.