Fly proxy http/2 protocol error with '>' in URLs

Hi Fly!

I’m seeing HTTP/2 stream breaks from Fly’s proxy for URL’s that contain an unquoted ‘>’. It happens on our app, and also for fly.io. As a quick reproduction, try:

$ curl -v "https://fly.io/some/path?foo->>bar=baz"
...
* HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
* stopped the pause stream!
* Connection #0 to host fly.io left intact
curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

Quoting the ‘>’ gets the expected 404 response:

$ curl -v "https://fly.io/some/path?foo-%3E%3Ebar=baz"

FWIW I ran into this deploying an instance of PostgREST, which uses ->> for JSON selection syntax.

This is arguably mostly a bug in curl, as saner clients like wget or browsers will properly quote the URL before sending, but it surprised me and I’m guessing is not intended behavior on your end. Cheers