Make WordPress Core


Ignore:
Timestamp:
10/27/2013 09:09:49 PM (13 years ago)
Author:
nacin
Message:

When an HTTPS request to api.wordpress.org fails, try an insecure HTTP request and issue a warning.

Certain versions of cURL appear to claim OpenSSL support but fail to work. We need to not trap users on older versions while we work this out, and instead fall back to an insecure request.

Merges [25956] to the 3.7 branch.
fixes #25716 for the 3.7 branch.

Location:
branches/3.7
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/3.7

  • branches/3.7/src

  • branches/3.7/src/wp-includes/update.php

    r25881 r25957  
    9494                $post_body = array_merge( $post_body, $extra_stats );
    9595
    96         $url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' );
    97         if ( wp_http_supports( array( 'ssl' ) ) )
     96        $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' );
     97        if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
    9898                $url = set_url_scheme( $url, 'https' );
    9999
     
    109109
    110110        $response = wp_remote_post( $url, $options );
     111        if ( $ssl && is_wp_error( $response ) ) {
     112                trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ) . ' ' . '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)', headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE );
     113                $response = wp_remote_post( $http_url, $options );
     114        }
    111115
    112116        if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) )
     
    247251        );
    248252
    249         $url = 'http://api.wordpress.org/plugins/update-check/1.1/';
    250         if ( wp_http_supports( array( 'ssl' ) ) )
     253        $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/';
     254        if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
    251255                $url = set_url_scheme( $url, 'https' );
    252256
    253257        $raw_response = wp_remote_post( $url, $options );
     258        if ( $ssl && is_wp_error( $raw_response ) ) {
     259                trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ) . ' ' . '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)', headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE );
     260                $raw_response = wp_remote_post( $http_url, $options );
     261        }
    254262
    255263        if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) )
     
    383391        );
    384392
    385         $url = 'http://api.wordpress.org/themes/update-check/1.1/';
    386         if ( wp_http_supports( array( 'ssl' ) ) )
     393        $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/';
     394        if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
    387395                $url = set_url_scheme( $url, 'https' );
    388396
    389397        $raw_response = wp_remote_post( $url, $options );
     398        if ( $ssl && is_wp_error( $raw_response ) ) {
     399                trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ) . ' ' . '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)', headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE );
     400                $raw_response = wp_remote_post( $http_url, $options );
     401        }
    390402
    391403        if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) )
Note: See TracChangeset for help on using the changeset viewer.