- release RC5
authorMichael Wallner <mike@php.net>
Sun, 28 May 2006 15:48:00 +0000 (15:48 +0000)
committerMichael Wallner <mike@php.net>
Sun, 28 May 2006 15:48:00 +0000 (15:48 +0000)
KnownIssues.txt
docs/functions.html
package.xml
package2.xml
php_http.h

index d54a683521503571adc3836aa37e8516e268abf0..ea870ec95f444dcb873b85f487fbcc68ab3c3c2a 100644 (file)
@@ -11,26 +11,12 @@ Windows:
 requests, try another (newer) libeay32.dll/ssleay32.dll pair.
 
 Deflate/Inflate:
 requests, try another (newer) libeay32.dll/ssleay32.dll pair.
 
 Deflate/Inflate:
-       http_inflate() resp. the HttpInflateStream should be able to inflate
-any compressed data (gzip, deflate AKA zlib and raw deflate).  However,
-inflating raw deflated data causes a re-initialization of the inflate
-stream where the corresponding window bits are modified to tell libz
-to not check for zlib header bytes.  This is not preventable AFAICS.
-       http_deflate() resp. the HttpDeflateStream should be able to
-generate any compressed data (gzip, deflate AKA zlib and raw deflate);
-just use the flag for the data format you want to generate:
-HTTP_DEFLATE_TYPE_GZIP, HTTP_DEFLATE_TYPE_ZLIB or HTTP_DEFLATE_TYPE_RAW.
+       Inflating raw deflated data causes a re-initialization of the inflate
+stream where the corresponding window bits are modified to tell libz to 
+not check for zlib header bytes.  This is not preventable AFAICS.
        Using an encoding stream filter on a stream you read from, will
 not work as expected in a PHP version lower than 5.1.3.
 
 Internals:
        Using an encoding stream filter on a stream you read from, will
 not work as expected in a PHP version lower than 5.1.3.
 
 Internals:
-       -       there's a memleak with sizeof(zval) for each thrown exception, 
-               which ends up in HttpRequestPoolExcepiont::$exceptionStack, in 
-               HttpRequestPool::__construct(); it doesn't happen with wrapped
-               exceptions in HttpRequestPool::send().
-
        -       our http_urlencode_hash() only handles arrays and does not
                differentiate between prefixes for numeric or string keys.
        -       our http_urlencode_hash() only handles arrays and does not
                differentiate between prefixes for numeric or string keys.
-
-       -       check all places where hash table entries are created if
-               the keys are properly NUL terminated (prior 1.0!)
index b27ed0799bae4709bf67515230a4092a77b61f5e..4c6aeedcbfdadac51e1e3a8c3c74dae1169befaf 100644 (file)
@@ -201,7 +201,7 @@ the Last-Modified header is updated and the actual body will be sent.</p>
 http.cache_log is set and the cache attempt was successful.</p>
 <h2 id="http_cache_etag">bool http_cache_etag([string etag])</h2>
 <p>Attempts to cache the sent entity by its ETag, either supplied or generated <br />
 http.cache_log is set and the cache attempt was successful.</p>
 <h2 id="http_cache_etag">bool http_cache_etag([string etag])</h2>
 <p>Attempts to cache the sent entity by its ETag, either supplied or generated <br />
-by the hash algorithm specified by the INI setting "http.etag_mode".</p>
+by the hash algorithm specified by the INI setting "http.etag.mode".</p>
 <p>If the clients "If-None-Match" header matches the supplied/calculated<br />
 ETag, the body is considered cached on the clients side and<br />
 a "304 Not Modified" status code is issued.</p>
 <p>If the clients "If-None-Match" header matches the supplied/calculated<br />
 ETag, the body is considered cached on the clients side and<br />
 a "304 Not Modified" status code is issued.</p>
@@ -210,7 +210,7 @@ a "304 Not Modified" status code is issued.</p>
 "http.cache_log" is set and the cache attempt was successful.</p>
 <h2 id="ob_etaghandler">string ob_etaghandler(string data, int mode)</h2>
 <p>For use with ob_start().  Output buffer handler generating an ETag with<br />
 "http.cache_log" is set and the cache attempt was successful.</p>
 <h2 id="ob_etaghandler">string ob_etaghandler(string data, int mode)</h2>
 <p>For use with ob_start().  Output buffer handler generating an ETag with<br />
-the hash algorithm specified with the INI setting "http.etag_mode".</p>
+the hash algorithm specified with the INI setting "http.etag.mode".</p>
 <h2 id="http_throttle">void http_throttle(double sec[, int bytes = 40960])</h2>
 <p>Sets the throttle delay and send buffer size for use with http_send() API.<br />
 Provides a basic throttling mechanism, which will yield the current process<br />
 <h2 id="http_throttle">void http_throttle(double sec[, int bytes = 40960])</h2>
 <p>Sets the throttle delay and send buffer size for use with http_send() API.<br />
 Provides a basic throttling mechanism, which will yield the current process<br />
@@ -284,7 +284,7 @@ several consecutive HTTP messages.</p>
 <span style="color: #0000BB">&lt;?php<br />print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">http_parse_cookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"foo=bar;&nbsp;bar=baz;&nbsp;path=/;&nbsp;domain=example.com;&nbsp;comment=;&nbsp;secure"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;array(</span><span style="color: #DD0000">"comment"</span><span style="color: #007700">)));<br /><br /></span><span style="color: #0000BB">stdClass&nbsp;Object<br /></span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">cookies</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">foo</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">bar<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">bar</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">baz<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">extras</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">comment</span><span style="color: #007700">]&nbsp;=&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">flags</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">16<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">expires</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">0<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">path</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;/<br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">domain</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">example</span><span style="color: #007700">.</span><span style="color: #0000BB">com<br /></span><span style="color: #007700">)<br /></span><span style="color: #0000BB">?&gt;</span><br />
 </span></code></blockquote></p>
 <p></pre></p>
 <span style="color: #0000BB">&lt;?php<br />print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">http_parse_cookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"foo=bar;&nbsp;bar=baz;&nbsp;path=/;&nbsp;domain=example.com;&nbsp;comment=;&nbsp;secure"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;array(</span><span style="color: #DD0000">"comment"</span><span style="color: #007700">)));<br /><br /></span><span style="color: #0000BB">stdClass&nbsp;Object<br /></span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">cookies</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">foo</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">bar<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">bar</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">baz<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">extras</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">comment</span><span style="color: #007700">]&nbsp;=&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">flags</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">16<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">expires</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">0<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">[</span><span style="color: #0000BB">path</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;/<br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000BB">domain</span><span style="color: #007700">]&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">example</span><span style="color: #007700">.</span><span style="color: #0000BB">com<br /></span><span style="color: #007700">)<br /></span><span style="color: #0000BB">?&gt;</span><br />
 </span></code></blockquote></p>
 <p></pre></p>
-<h2 id="http_parse_params">object http_parse_params(string param)</h2>
+<h2 id="http_parse_params">object http_parse_params(string param[, int flags = HTTP_PARAMS_DEFAULT])</h2>
 <p>Parse parameter list.</p>
 <h2 id="http_get_request_headers">array http_get_request_headers(void)</h2>
 <p>Get a list of incoming HTTP headers.</p>
 <p>Parse parameter list.</p>
 <h2 id="http_get_request_headers">array http_get_request_headers(void)</h2>
 <p>Get a list of incoming HTTP headers.</p>
@@ -1434,7 +1434,7 @@ http.cache_log is set.</p>
 </li>
 </ul>
 </div>
 </li>
 </ul>
 </div>
-    <p><b>Generated at: Thu, 25 May 2006 10:46:03 +0200</b></p>
+    <p><b>Generated at: Sun, 28 May 2006 17:34:52 +0200</b></p>
 </body>
 </html>
 
 </body>
 </html>
 
index 104d2c644ecc929c2b29a82a30f197f6b95ecef1..775bedca39943ad51868c9b1aaf25298d63eb769 100644 (file)
@@ -12,14 +12,7 @@ language and charset, as well as a convenient way to send any
 arbitrary data with caching and resuming capabilities.
 
 It provides powerful request functionality, if built with CURL 
 arbitrary data with caching and resuming capabilities.
 
 It provides powerful request functionality, if built with CURL 
-support. Parallel requests are available for PHP-5 and greater.
-
-PHP-5 classes:
-HttpUtil, HttpMessage, HttpRequest, HttpRequestPool, 
-HttpDeflateStream, HttpInflateStream, HttpQueryString
-
-PHP-5.1 classes:
-HttpResponse
+support. Parallel requests are available for PHP 5 and greater.
  </description>
  <maintainers>
   <maintainer>
  </description>
  <maintainers>
   <maintainer>
@@ -30,16 +23,19 @@ HttpResponse
   </maintainer>
   </maintainers>
  <release>
   </maintainer>
   </maintainers>
  <release>
-  <version>1.0.0RC4</version>
-  <date>2006-05-19</date>
+  <version>1.0.0RC5</version>
+  <date>2006-05-28</date>
   <license>BSD, revised</license>
   <state>beta</state>
   <license>BSD, revised</license>
   <state>beta</state>
-  <notes>+ Added http_parse_params() function
-+ Added HTTP_URL_STRIP_ALL constant
-* Fixed possible crash in progress/onfinish request callbacks
-* Fixed http_redirect() and http_build_url() without arguments
-* Fixed behaviour of http_build_url() when second parameter is NULL
-* Enabled recursive query string merging in http_build_url() with HTTP_URL_JOIN_QUERY
+  <notes>+ Added HttpRequest::enableCookies() and HttpRequest::resetCookies([bool session_only=FALSE])
++ Added optional flags argument to http_parse_params()
++ Added HTTP_PARAMS_ALLOW_COMMA, HTTP_PARAMS_ALLOW_FAILURE, HTTP_PARAMS_RAISE_ERROR constants
+* Fixed http_build_url(&quot;./path&quot;) if REQUEST_URI is empty
+* Fixed http_parse_params(&quot;foo;bar&quot;) returning &quot;foo&quot; and &quot;ar&quot;
+* Fixed return value of http_parse_params() Object{&quot;params&quot;=&gt;Array(&quot;value&quot;, Array(&quot;name&quot;=&gt;&quot;value&quot;), ...)}
+* Fixed HttpMessage::setRequestMethod() errenously issuing a warning about an unknown request method
+* Fixed bugs introduced by using the new REQUEST_TIME server variable
+! NOTE: Many INI settings have been renamed to comply with the internal structure
   </notes>
   <deps>
    <dep type="php" rel="ge" version="4.3"/>
   </notes>
   <deps>
    <dep type="php" rel="ge" version="4.3"/>
@@ -130,11 +126,11 @@ HttpResponse
     <file role="test" name="HttpRequest_007.phpt"/>
     <file role="test" name="HttpRequest_008.phpt"/>
     <file role="test" name="HttpRequest_009.phpt"/>
     <file role="test" name="HttpRequest_007.phpt"/>
     <file role="test" name="HttpRequest_008.phpt"/>
     <file role="test" name="HttpRequest_009.phpt"/>
+    <file role="test" name="HttpRequest_010.phpt"/>
     <file role="test" name="HttpResponse_001.phpt"/>
     <file role="test" name="HttpResponse_002.phpt"/>
     <file role="test" name="HttpResponse_003.phpt"/>
     <file role="test" name="HttpResponse_004.phpt"/>
     <file role="test" name="HttpResponse_001.phpt"/>
     <file role="test" name="HttpResponse_002.phpt"/>
     <file role="test" name="HttpResponse_003.phpt"/>
     <file role="test" name="HttpResponse_004.phpt"/>
-    <file role="test" name="INI_001.phpt"/>
     <file role="test" name="log.inc"/>
     <file role="test" name="match_request_header_001.phpt"/>
     <file role="test" name="negotiation_001.phpt"/>
     <file role="test" name="log.inc"/>
     <file role="test" name="match_request_header_001.phpt"/>
     <file role="test" name="negotiation_001.phpt"/>
@@ -148,6 +144,7 @@ HttpResponse
     <file role="test" name="parse_message_003.phpt"/>
     <file role="test" name="parse_message_004.phpt"/>
     <file role="test" name="parse_message_005.phpt"/>
     <file role="test" name="parse_message_003.phpt"/>
     <file role="test" name="parse_message_004.phpt"/>
     <file role="test" name="parse_message_005.phpt"/>
+    <file role="test" name="parse_params_001.phpt"/>
     <file role="test" name="redirect_001.phpt"/>
     <file role="test" name="redirect_001_logging.phpt"/>
     <file role="test" name="redirect_002.phpt"/>
     <file role="test" name="redirect_001.phpt"/>
     <file role="test" name="redirect_001_logging.phpt"/>
     <file role="test" name="redirect_002.phpt"/>
index 8c8e030f6dff7adc787ff4db807b69d50bafc0ce..ad3f4af177f4de1cb92ee3e0f2113b5c247bcbfa 100644 (file)
@@ -20,7 +20,7 @@ language and charset, as well as a convenient way to send any
 arbitrary data with caching and resuming capabilities.
 
 It provides powerful request functionality, if built with CURL 
 arbitrary data with caching and resuming capabilities.
 
 It provides powerful request functionality, if built with CURL 
-support. Parallel requests are available for PHP-5 and greater.
+support. Parallel requests are available for PHP 5 and greater.
 ]]></description>
  <lead>
   <name>Michael Wallner</name>
 ]]></description>
  <lead>
   <name>Michael Wallner</name>
@@ -46,6 +46,8 @@ support. Parallel requests are available for PHP-5 and greater.
 * Fixed http_parse_params("foo;bar") returning "foo" and "ar"
 * Fixed return value of http_parse_params() Object{"params"=>Array("value", Array("name"=>"value"), ...)}
 * Fixed HttpMessage::setRequestMethod() errenously issuing a warning about an unknown request method
 * Fixed http_parse_params("foo;bar") returning "foo" and "ar"
 * Fixed return value of http_parse_params() Object{"params"=>Array("value", Array("name"=>"value"), ...)}
 * Fixed HttpMessage::setRequestMethod() errenously issuing a warning about an unknown request method
+* Fixed bugs introduced by using the new REQUEST_TIME server variable
+! NOTE: Many INI settings have been renamed to comply with the internal structure
 ]]></notes>
  <contents>
   <dir name="/">
 ]]></notes>
  <contents>
   <dir name="/">
@@ -203,7 +205,6 @@ support. Parallel requests are available for PHP-5 and greater.
     <file role="test" name="HttpResponse_002.phpt"/>
     <file role="test" name="HttpResponse_003.phpt"/>
     <file role="test" name="HttpResponse_004.phpt"/>
     <file role="test" name="HttpResponse_002.phpt"/>
     <file role="test" name="HttpResponse_003.phpt"/>
     <file role="test" name="HttpResponse_004.phpt"/>
-    <file role="test" name="INI_001.phpt"/>
     <file role="test" name="match_request_header_001.phpt"/>
     <file role="test" name="negotiation_001.phpt"/>
     <file role="test" name="ob_deflatehandler_001.phpt"/>
     <file role="test" name="match_request_header_001.phpt"/>
     <file role="test" name="negotiation_001.phpt"/>
     <file role="test" name="ob_deflatehandler_001.phpt"/>
index 6c378a224e5926827f95c50d23c92920e020588b..09010f8e1685dfc940cbab433308b7e7662958ba 100644 (file)
@@ -15,7 +15,7 @@
 #ifndef PHP_EXT_HTTP_H
 #define PHP_EXT_HTTP_H
 
 #ifndef PHP_EXT_HTTP_H
 #define PHP_EXT_HTTP_H
 
-#define PHP_EXT_HTTP_VERSION "1.0.0RC5-dev"
+#define PHP_EXT_HTTP_VERSION "1.0.0RC5"
 
 #ifdef HAVE_CONFIG_H
 #      include "config.h"
 
 #ifdef HAVE_CONFIG_H
 #      include "config.h"