--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
--FILE--
<?php
-include "server.inc";
+include "helper/server.inc";
echo "Test\n";
+++ /dev/null
-<?php
-
-include "server.inc";
-
-function respond($client, $msg) {
- (new http\Env\Response)->setEnvRequest($msg)
- ->setHeader("X-Req", $msg->getRequestUrl())
- ->send($client);
-}
-
-serve(function($client) {
- $count = trim(fgets(STDIN));
-
- /* the peek message */
- respond($client, new http\Message($client, false));
-
- /* pipelined messages */
- $req = array();
- for ($i=0; $i < $count; ++ $i) {
- $req[] = new http\Message($client, false);
- }
- foreach ($req as $msg) {
- respond($client, $msg);
- }
-});
+++ /dev/null
---TEST--
-pipelining
---SKIPIF--
-<?php
-include "skipif.inc";
-skip_client_test();
-?>
---FILE--
-<?php
-
-include "server.inc";
-
-echo "Test\n";
-
-server("pipeline.inc", function($port, $stdin, $stdout, $stderr) {
- /* tell the server we're about to send 3 pipelined messages */
- fputs($stdin, "3\n");
-
- $client = new http\Client(null);
- $client->configure(["pipelining" => true, "max_host_connections" => 0]);
-
- /* this is just to let curl know the server may be capable of pipelining */
- $client->enqueue(new http\Client\Request("GET", "http://localhost:$port"));
- $client->send();
-
- $client->enqueue(new http\Client\Request("GET", "http://localhost:$port/1"));
- $client->enqueue(new http\Client\Request("GET", "http://localhost:$port/2"));
- $client->enqueue(new http\Client\Request("GET", "http://localhost:$port/3"));
- $client->send();
-
- while (($response = $client->getResponse())) {
- echo $response;
- }
-});
-
-?>
-===DONE===
---EXPECT--
-Test
-HTTP/1.1 200 OK
-X-Req: /3
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-X-Req: /2
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-X-Req: /1
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-X-Req: /
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-===DONE===
<?php
include "skipif.inc";
?>
+--XFAIL--
+TBD
--FILE--
<?php
+++ /dev/null
-<?php
-
-include "server.inc";
-
-serve(function($client) {
- /* this might be a proxy connect or a standard request */
- $request = new http\Message($client, false);
-
- if ($request->getHeader("Proxy-Connection")) {
- $response = new http\Env\Response;
- $response->send($client);
-
- /* soak up the request following the connect */
- new http\Message($client, false);
- }
-
- /* return the initial message as response body */
- $response = new http\Env\Response;
- $response->getBody()->append($request);
- $response->send($client);
-});
+++ /dev/null
---TEST--
-proxy - send proxy headers for a proxy request
---SKIPIF--
-<?php
-include "skipif.inc";
-skip_client_test();
-?>
---FILE--
-<?php
-
-include "server.inc";
-
-echo "Test\n";
-
-server("proxy.inc", function($port, $stdin, $stdout, $stderr) {
- echo "Server on port $port\n";
-
- $c = new http\Client;
- $r = new http\Client\Request("GET", "http://www.example.com/");
- $r->setOptions(array(
- "timeout" => 3,
- "proxytunnel" => true,
- "proxyheader" => array("Hello" => "there!"),
- "proxyhost" => "localhost",
- "proxyport" => $port,
- ));
- try {
- $c->enqueue($r)->send();
- } catch (Exception $e) {
- echo $e;
- }
- echo $c->getResponse()->getBody();
- unset($r, $client);
-});
-
-?>
-===DONE===
---EXPECTF--
-Test
-Server on port %d
-CONNECT www.example.com:80 HTTP/1.1
-Host: www.example.com:80
-User-Agent: PECL_HTTP/%s PHP/%s libcurl/%s
-Proxy-Connection: Keep-Alive
-Hello: there!
-Content-Length: 0
-===DONE===
+++ /dev/null
---TEST--
-proxy - don't send proxy headers for a standard request
---SKIPIF--
-<?php
-include "skipif.inc";
-skip_client_test();
-?>
---FILE--
-<?php
-
-include "server.inc";
-
-echo "Test\n";
-
-server("proxy.inc", function($port, $stdin, $stdout, $stderr) {
- echo "Server on port $port\n";
- $c = new http\Client;
- $r = new http\Client\Request("GET", "http://localhost:$port/");
- $r->setOptions(array(
- "timeout" => 3,
- "proxyheader" => array("Hello" => "there!"),
- ));
- try {
- $c->enqueue($r)->send();
- } catch (Exception $e) {
- echo $e;
- }
- echo $c->getResponse()->getBody();
- unset($r, $client);
-});
-
-?>
-===DONE===
---EXPECTF--
-Test
-Server on port %d
-GET / HTTP/1.1
-User-Agent: PECL_HTTP/%s PHP/%s libcurl/%s
-Host: localhost:%d
-Accept: */*
-Content-Length: 0
-===DONE===
+++ /dev/null
-<?php
-
-function serve(callable $cb) {
- foreach (range(8000, 9000) as $port) {
- if (($server = stream_socket_server("tcp://localhost:$port"))) {
- fprintf(STDERR, "%s\n", $port);
- do {
- $R = [$server]; $W = []; $E = [];
- $select = stream_select($R, $E, $E, 0, 10000);
- if ($select && ($client = stream_socket_accept($server, 1))) {
- if (getenv("PHP_HTTP_TEST_SSL")) {
- stream_socket_enable_crypto($client, true, STREAM_CRYPTO_METHOD_SSLv23_SERVER);
- }
- while (!feof($client)) {
- $cb($client);
- }
- }
- } while ($select !== false);
- return;
- }
- }
-}
-
-function server($file, callable $cb) {
- $spec = array(array("pipe","r"), array("pipe","w"), array("pipe","w"));
- if (($proc = proc_open(PHP_BINARY . " $file", $spec, $pipes, __DIR__))) {
- $port = trim(fgets($pipes[2]));
-
- $cb($port, $stdin = $pipes[0], $stdout = $pipes[1], $stderr = $pipes[2]);
-
- proc_terminate($proc);
-
- fpassthru($stderr);
- fpassthru($stdout);
- }
-}