php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #12631 Fatal: ob_get_length() returns wrong value when compressed OB is on
Submitted: 2001-08-07 14:11 UTC Modified: 2001-12-12 04:37 UTC
From: troels at arvin dot dk Assigned:
Status: Closed Package: Output Control
PHP Version: 4.0.6 OS: Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: troels at arvin dot dk
New email:
PHP Version: OS:

 

 [2001-08-07 14:11 UTC] troels at arvin dot dk
When output buffering is on, using the gzhandler, then ob_get_length() returns the uncompressed content length in stead of the actual (compressed) payload.

This is fatal if a Content-Length HTTP-header is sent and the browser implements HTTP keep-alive. The result is a web-site which appears to be down or with extremely slow responses.

Example PHP code:

<?php

ob_start('ob_gzhandler');

print "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; // 30 a's
print "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; // 30 b's
print "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; // 30 a's

header('Content-Length: '.ob_get_length());
ob_end_flush();

?>

If this is saved as http://localhost/ob.php then try the following wget command:

wget --header="Accept-Encoding: gzip" --header="Connection: close" -S http://localhost/ob.php
Notice that wget displays the following error message continuously:
Connection closed at byte 36. Retrying.

Also notice that the web-server told wget to expect 90 bytes (the uncompressed payload).

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-12-12 04:37 UTC] yohgaki@php.net
I might be wrong, but this is fixed in CVS or 4.1.0
Please reopen if problem exists in snapshot.
http://snaps.php.net/
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Dec 27 19:01:28 2024 UTC