Make WordPress Core

Changeset 8654


Ignore:
Timestamp:
08/16/2008 05:38:57 AM (18 years ago)
Author:
azaozz
Message:

Disable fsockopen for 12 hours if it fails. Props jacobsantos, fixes #7514

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/http.php

    r8648 r8654  
    126126                        if ( true === WP_Http_ExtHttp::test() && apply_filters('use_http_extension_transport', true) )
    127127                                $working_transport[] = new WP_Http_ExtHttp();
     128                        else if ( true === WP_Http_Streams::test() && apply_filters('use_streams_transport', true) )
     129                                $working_transport[] = new WP_Http_Streams();
    128130                        else if ( true === WP_Http_Fsockopen::test() && apply_filters('use_fsockopen_transport', true) )
    129131                                $working_transport[] = new WP_Http_Fsockopen();
    130                         else if ( true === WP_Http_Streams::test() && apply_filters('use_streams_transport', true) )
    131                                 $working_transport[] = new WP_Http_Streams();
    132132                }
    133133
    … …  
    202202
    203203                if ( isset($r['headers']['User-Agent']) ) {
    204                         $r['user-agent'] = $headers['User-Agent'];
     204                        $r['user-agent'] = $r['headers']['User-Agent'];
    205205                        unset($r['headers']['User-Agent']);
    206206                }
    … …  
    464464                        $error_reporting = error_reporting(0);
    465465
     466                $startDelay = time();
     467
    466468                if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) )
    467469                        $handle = @fsockopen($arrURL['host'], $arrURL['port'], $iError, $strError, $r['timeout'] );
    468470                else
    469471                        $handle = fsockopen($arrURL['host'], $arrURL['port'], $iError, $strError, $r['timeout'] );
     472
     473                $endDelay = time();
     474
     475                // If the delay is greater than the timeout then fsockopen should't be
     476                // used, because it will cause a long delay.
     477                $elapseDelay = ($endDelay-$startDelay) > $r['timeout'];
     478                if ( true === $elapseDelay )
     479                        add_option( 'disable_fsockopen', $endDelay, null, true );
    470480
    471481                if ( false === $handle )
    … …  
    545555         */
    546556        function test() {
     557                if ( false !== ($option = get_option( 'disable_fsockopen' )) && time()-$option < 43200 ) // 12 hours
     558                        return false;
     559
    547560                if ( function_exists( 'fsockopen' ) )
    548561                        return true;
Note: See TracChangeset for help on using the changeset viewer.