curl-http3
curl-http3 copied to clipboard
Missing `--compressed` support
$ docker run -it --rm --net=host ymuski/curl-http3 curl -vs -o/dev/null --http3-only --compressed https://localhost
curl: option --compressed: the installed libcurl version doesn't support this
curl: try 'curl --help' for more information
Hi @francislavoie
I've checked curl compile options, and there are no options about compression.
So I've check curl code and seems compression does not work with BoringSSL on which this version is based
I was able to compile with zlib, seems working, but not well tested
If you have a branch I can try it out with my webserver to confirm :+1:
Released as new version
docker run -it --rm ymuski/curl-http3 curl -IL https://yurets.pro --compressed --http3
> content-encoding: gzip
you can try it
docker pull ymuski/curl-http3:latest
docker pull ymuski/curl-http3:8.2.1
Hmm, that's weird. It seems to hang after making the request and reading most of the response body.
Here's how I'm testing it:
- Download a build of Caddy from https://github.com/caddyserver/caddy/releases/tag/v2.7.4,
chmod +x
the binary if necessary - Make a
Caddyfile
with the below contents:
{
admin off
debug
http_port 8881
https_port 8882
}
https://localhost:8882 {
log
encode gzip
respond "THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING THIS IS A LONG STRING this is the end"
}
- Run Caddy with
./caddy run --config Caddyfile
, this'll spin up a server with a self-managed CA listening for requests tohttps://localhost:8882
- Make a request with
docker run -it --rm --init --net=host ymuski/curl-http3 curl -vks --http3-only --compressed https://localhost:8882
- Notice it hangs after the response, it also never prints out
this is the end
and it stops printing before the last chunk of the body, no matter the length of the body (you can add tons of extra text in the middle and notice it'll print the middle stuff but not the ending stuff :thinking:) - Using
--init
is necessary because otherwise theCtrl+C
signal will not reach the curl command and the container will hang indefinitely. Using--net=host
cause it's just slightly easier to run Caddy on the host machine since it's a static binary, don't feel like setting up a docker-compose file etc. Using-k
because it's a self-managed CA and the CA cert on the host isn't visible to the curl in the container.
does it behave same w/o http3?
and whats the behavior of regular curl with http1.1?
I will update https://github.com/yurymuski/nginx-http3 for latest quiche and check on it also