Ticket #16057: 16057.5.diff
File 16057.5.diff, 2.4 KB (added by , 11 years ago) |
---|
-
src/wp-includes/class-http.php
864 864 } 865 865 } 866 866 867 if ( isset( $r['limit_response_size'] ) && ( $bytes_written + strlen( $block ) ) > $r['limit_response_size'] ) 867 $this_block_size = strlen( $block ); 868 869 if ( isset( $r['limit_response_size'] ) && ( $bytes_written + $this_block_size ) > $r['limit_response_size'] ) 868 870 $block = substr( $block, 0, ( $r['limit_response_size'] - $bytes_written ) ); 869 871 870 $bytes_written += fwrite( $stream_handle, $block );872 $bytes_written_to_file = fwrite( $stream_handle, $block ); 871 873 874 if ( $bytes_written_to_file != $this_block_size ) { 875 fclose( $handle ); 876 fclose( $stream_handle ); 877 return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) ); 878 } 879 880 $bytes_written += $bytes_written_to_file; 881 872 882 $keep_reading = !isset( $r['limit_response_size'] ) || $bytes_written < $r['limit_response_size']; 873 883 } 874 884 … … 1229 1239 $this->headers = ''; 1230 1240 $this->body = ''; 1231 1241 1232 // If no response 1233 if ( 0 == strlen( $theBody ) && empty( $theHeaders['headers'] ) ) { 1242 $curl_error = curl_errno( $handle ); 1243 1244 // If an error occured, or, no response 1245 if ( $curl_error || ( 0 == strlen( $theBody ) && empty( $theHeaders['headers'] ) ) ) { 1246 if ( CURLE_WRITE_ERROR /* 23 */ == $curl_error && $r['stream'] ) { 1247 fclose( $this->stream_handle ); 1248 return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) ); 1249 } 1234 1250 if ( $curl_error = curl_error( $handle ) ) { 1235 1251 curl_close( $handle ); 1236 1252 return new WP_Error( 'http_request_failed', $curl_error ); … … 1304 1320 $data = substr( $data, 0, ( $this->max_body_length - strlen( $this->body ) ) ); 1305 1321 1306 1322 if ( $this->stream_handle ) 1307 fwrite( $this->stream_handle, $data );1323 $bytes_written = fwrite( $this->stream_handle, $data ); 1308 1324 else 1309 1325 $this->body .= $data; 1310 1326 1311 $data_length = strlen( $data );1312 1313 1327 if ( isset( $mb_encoding ) ) 1314 1328 mb_internal_encoding( $mb_encoding ); 1315 1329 1316 return $data_length; 1330 // Upon event of this function returning less than strlen( $data ) curl will error with CURLE_WRITE_ERROR 1331 return isset( $bytes_written ) ? $bytes_written : strlen( $data ); 1317 1332 } 1318 1333 1319 1334 /**