HTTP2 & Expect: 100-continue

Hi,

I have encountered a strange behaviour with HTTP2 and Expect: 100-continue header. When I connect a test curl request directly to our GCP load balancer I receive HTTP/2 100 response. Cloudflare however discards the 100 response and client has to wait for a timeout. Is this behaviour expected?

Upstream connection, IP address redacted
$ curl -vk --http2 -X POST -H ‘Expect: 100-continue’ --expect100-timeout 10 --header “Content-Type: application/json” --header “Host: cargo.damejidlo.cz” --data-binary ‘{}’ ‘https://IP_ADDRESS/api/’
> POST /api/ HTTP/2
> Host: cargo.damejidlo.cz
> User-Agent: curl/7.61.0
> Accept: /
> Expect: 100-continue
> Content-Type: application/json
> Content-Length: 2
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 100
* We are completely uploaded and fine
< HTTP/2 404
< server: nginx/1.13.12

Cloudflare connection, notice the timeout
$ curl -vk --http2 -X POST -H ‘Expect: 100-continue’ --expect100-timeout 10 --header “Content-Type: application/json” --header “Host: cargo.damejidlo.cz” --data-binary ‘{}’ ‘https://cargo.damejidlo.cz/api/
> POST /api/ HTTP/2
> Host: cargo.damejidlo.cz
> User-Agent: curl/7.61.0
> Accept: /
> Expect: 100-continue
> Content-Type: application/json
> Content-Length: 2
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
* Done waiting for 100-continue
* We are completely uploaded and fine
< HTTP/2 404
< date: Mon, 20 Aug 2018 14:00:07 GMT

This topic was automatically closed after 14 days. New replies are no longer allowed.