WordPress.org

Make WordPress Core

Ticket #8727: 8727.diff

File 8727.diff, 2.6 KB (added by jacobsantos, 9 years ago)

Debugging actions and action for curl object.

  • http.php

     
    3030 * requirement, it will be easy to add the static keyword to the code. It is not
    3131 * as easy to convert a function to a method after enough code uses the old way.
    3232 *
     33 * Debugging includes several actions, which pass different variables for
     34 * debugging the HTTP API.
     35 *
     36 * <strong>http_transport_get_debug</strong> - gives working, nonblocking, and
     37 * blocking transports.
     38 *
     39 * <strong>http_transport_post_debug</strong> - gives working, nonblocking, and
     40 * blocking transports.
     41 *
    3342 * @package WordPress
    3443 * @subpackage HTTP
    3544 * @since 2.7
     
    114123                        }
    115124                }
    116125
     126                if( has_filter('http_transport_get_debug') )
     127                        do_action('http_transport_get_debug', $working_transport, $blocking_transport, $nonblocking_transport);
     128
    117129                if ( isset($args['blocking']) && !$args['blocking'] )
    118130                        return $nonblocking_transport;
    119131                else
     
    156168                        }
    157169                }
    158170
     171                if( has_filter('http_transport_post_debug') )
     172                        do_action('http_transport_post_debug', $working_transport, $blocking_transport, $nonblocking_transport);
     173
    159174                if ( isset($args['blocking']) && !$args['blocking'] )
    160175                        return $nonblocking_transport;
    161176                else
     
    257272                        $transports = WP_Http::_postTransport($r);
    258273                }
    259274
     275                if( has_action('http_api_debug') )
     276                        do_action('http_api_debug', $transports, 'transports_list');
     277
    260278                $response = array( 'headers' => array(), 'body' => '', 'response' => array('code', 'message') );
    261279                foreach( (array) $transports as $transport ) {
    262280                        $response = $transport->request($url, $r);
    263281
    264                         if( !is_wp_error($response) )
     282                        if( has_action('http_api_debug') )
     283                                do_action( 'http_api_debug', $response, 'response', get_class($transport) );
     284
     285                        if( ! is_wp_error($response) )
    265286                                return $response;
    266287                }
    267288
     
    409430
    410431                        if ( $hasChunk ) {
    411432                                if ( empty($match[1]) ) {
    412                                         return new WP_Error('http_chunked_decode', __('Does not appear to be chunked encoded or body is malformed.') );
     433                                        return $body;
    413434                                }
    414435
    415436                                $length = hexdec( $match[1] );
     
    426447                                        break;
    427448                                }
    428449                        } else {
    429                                 return new WP_Error('http_chunked_decode', __('Does not appear to be chunked encoded or body is malformed.') );
     450                                return $body;
    430451                        }
    431452                } while ( false === $done );
    432453        }
     
    10191040                else
    10201041                        curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
    10211042
     1043                do_action_ref_array( 'http_api_curl', &$handle );
     1044
    10221045                if ( ! $r['blocking'] ) {
    10231046                        curl_exec( $handle );
    10241047                        curl_close( $handle );