[wp-trac] [WordPress Trac] #11912: gzuncompress errors in WP_Http_Encoding::decompress()

WordPress Trac wp-trac at lists.automattic.com
Fri Jan 15 17:14:56 UTC 2010


#11912: gzuncompress errors in WP_Http_Encoding::decompress()
--------------------------+-------------------------------------------------
 Reporter:  rowanbeentje  |       Owner:  dd32                             
     Type:  defect (bug)  |      Status:  new                              
 Priority:  normal        |   Milestone:  Unassigned                       
Component:  HTTP          |     Version:  2.9.1                            
 Severity:  normal        |    Keywords:  gzuncompress decompress http cron
--------------------------+-------------------------------------------------
 Hi there,

 We have a custom PHP error handler which catches errors (both
 trigger_error'd and fatal) and files them in a tracking system; over the
 last few weeks we've had quite a few occurrences of "gzuncompress() : data
 error" thrown in WP_Http_Encoding::decompress().

 When I first looked into this I found #11600, and thought that was the
 cause; as a result I took the http.php file from
 http://core.trac.wordpress.org/export/11450/trunk/wp-includes/http.php and
 dropped that in over the 2.9.1 version.  Unfortunately that hasn't stopped
 the occurrences!

 Fortunately our error handler captures a backtrace and some context; as a
 result, I can see that WP_Http_Encoding::decompress() is called with one
 argument: false.  gzinflate simply returns false when it is passed false,
 but gzuncompress throws an E_WARNING.

 I'm not entirely sure why decompress() is being passed false - my
 suspicion is that the curl request is timing out, but that decompress is
 called on the result anyway?  I haven't followed the logic through
 completely…

 Here's an abbreviated backtrace; let me know if you need more detail.

 1. blog/wp-cron.php:55
      do_action_ref_array('do_pings', array());
 2. blog/wp-includes/plugin.php:414
      call_user_func_array('do_all_pings', array());
 3. do_all_pings(array())
 4. blog/wp-includes/comment.php:1543
      do_enclose(<snip>, <snip>)
 5. blog/wp-includes/functions.php:1163
      wp_get_http_headers(<snip url>)
 6. blog/wp-includes/functions.php:1233
      wp_remote_head(<snip url>)
 7. blog/wp-includes/http.php:1968
      WP_Http::head(<snip url>, array())
 8. blog/wp-includes/http.php:366
      WP_Http_Curl::request(<snip url>, array(method:head, timeout:5,
 redirection:5, httpversion:1.0, etc etc))
 9. blog/wp-includes/http.php:1354
      WP_Http_Encoding::decompress(false)
 10. blog/wp-includes/http.php:1792
        gzuncompress(false)

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/11912>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list