Make WordPress Core

Changeset 8654


Ignore:
Timestamp:
08/16/2008 05:38:57 AM (17 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.