Known Issues
============
-Windows:
- If you keep getting "SSL connect error" when trying to issue
- requests, try another (newer) libeay32.dll/ssleay32.dll pair.
+## libcurl-7.64.1
-Internals:
- 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.
- LFS dependant parts of libcurl are left out because of off_t,
- respectively off64_t confusion.
- Persistent handles and "cookiestore" request option do interfere,
- as libcurl saves the cookies to the file on curl_easy_destroy(),
- cookies are not saved until the CURL handle will be recycled.
- Thus one would either need to
- * run PHP with raphf.persistent_handles.limit = 0
- * call raphf\persistent_handles_clean() every request
- * call $client->flushCookies(), which is available
- since libcurl v7.17.1 and does not work with the
- procedural API
- HTTP and Proxy authentication information (username/password) can not be
- unset with NULL prior libcurl v7.19.6 and separate options for setting
- username and password--which work--are only available since v7.19.6.
+Superfluous output of "* Closing connection #" on STDERR.
\ No newline at end of file
curl_easy_setopt(handler->handle, CURLOPT_COOKIELIST, "FLUSH");
curl_easy_setopt(handler->handle, CURLOPT_SHARE, NULL);
/* see gh issue #84 */
- curl_easy_setopt(handler->handle, CURLOPT_COOKIEJAR, NULL);
+ //if (php_http_curle_get_storage(handler->handle)->cookiestore) {
+ //curl_easy_setopt(handler->handle, CURLOPT_COOKIEJAR, NULL);
+ //}
}
static void php_http_client_curl_handler_dtor(php_http_client_curl_handler_t *handler)
--- /dev/null
+--TEST--
+client cookie sharing disabled
+--SKIPIF--
+<?php
+include "skipif.inc";
+skip_client_test();
+?>
+--FILE--
+<?php
+
+include "helper/server.inc";
+include "helper/dump.inc";
+
+echo "Test\n";
+
+server("cookie.inc", function($port) {
+ $client = new http\Client(null, "cookies");
+ $client->configure(array("share_cookies" => false));
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+ /* requeue the previous request */
+ $client->requeue($request);
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+});
+
+?>
+===DONE===
+--EXPECTF--
+Test
+Etag: ""
+Set-Cookie: counter=1;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=1;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=2;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=1;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=1;
+X-Original-Transfer-Encoding: chunked
+
+===DONE===
--- /dev/null
+--TEST--
+client cookie sharing enabled
+--SKIPIF--
+<?php
+include "skipif.inc";
+skip_client_test();
+?>
+--FILE--
+<?php
+
+include "helper/server.inc";
+include "helper/dump.inc";
+
+echo "Test\n";
+
+server("cookie.inc", function($port) {
+ $client = new http\Client(null, "cookies");
+ $client->configure(array("share_cookies" => true));
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+ /* requeue the previous request */
+ $client->requeue($request);
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+ $request = new http\Client\Request("GET", "http://localhost:$port");
+ $client->enqueue($request);
+ $client->send();
+ while (($r = $client->getResponse())) {
+ dump_headers(null, $r->getHeaders());
+ }
+});
+
+?>
+===DONE===
+--EXPECTF--
+Test
+Etag: ""
+Set-Cookie: counter=1;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=2;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=2;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=3;
+X-Original-Transfer-Encoding: chunked
+
+Etag: ""
+Set-Cookie: counter=4;
+X-Original-Transfer-Encoding: chunked
+
+===DONE===