Detect failures and try again.

Paramètres

array $responses: An array of $response objects from a http request.

2 calls to advagg_relocate_try_failures_again()
advagg_relocate_get_remote_data dans advagg_relocate/advagg_relocate.advagg.inc
Gets external CSS and JS files; caches and returns response.
advagg_relocate_get_remote_font_data dans advagg_relocate/advagg_relocate.advagg.inc
Gets external CSS files; caches it and returns css font rules.

Fichier

advagg_relocate/advagg_relocate.advagg.inc, line 627

Code

function advagg_relocate_try_failures_again(array &$responses) {
    // Try failures again.
    foreach ($responses as $key => &$response) {
        // Strlen doesn't match.
        if (!empty($response->headers['content-length']) && $response->headers['content-length'] > strlen($response->data)) {
            $response->code = 0;
            if (isset($response->options['headers']['connection'])) {
                unset($response->options['headers']['connection']);
            }
        }
        // Decode data.
        $decode_ok = advagg_relocate_uncompress_data($response);
        if (!$decode_ok) {
            // If decoding failed try again.
            if (isset($response->options['headers']['Accept-Encoding'])) {
                unset($response->options['headers']['Accept-Encoding']);
            }
            $response->code = 0;
        }
        // Try again if code is empty.
        if (empty($response->code)) {
            $url = $response->url;
            $options = $response->options;
            $responses[$key] = drupal_http_request($url, $options);
            if (!isset($responses[$key]->options)) {
                $responses[$key]->options = $options;
            }
            if (!isset($responses[$key]->url)) {
                $responses[$key]->url = $url;
            }
        }
    }
    // Try failures again, but force http.
    foreach ($responses as $key => $response) {
        if (empty($response->code)) {
            $url = advagg_force_http_path($response->url);
            $options = $response->options;
            $responses[$key] = drupal_http_request($url, $options);
            if (!isset($responses[$key]->options)) {
                $responses[$key]->options = $options;
            }
            if (!isset($responses[$key]->url)) {
                $responses[$key]->url = $url;
            }
        }
    }
}