On Wed, May 19, 2021 at 08:56:48PM +0200, Paul de Weerd wrote:
> For the record: I tested this on a WordPress instance and it fixed the
> problem for me. It was also visible in roundcubemail and wikimedia
> (firefox and safari showed the issue, chrome on the company laptop
> did not).
>
> Thanks Florian!
>
> Paul
>
> On Wed, May 19, 2021 at 08:44:47PM +0200, Florian Obser wrote:
> | The whole point of using Transfer-Encoding: chunked for fastcgi was so
> | that we do not need to provide a Content-Length header if upstream
> | doesn't give us one. (We'd need to slurp in all the data ugh).
> |
> | Now turns out that if we disable chunked encoding for zero sized bodies
> | some browsers are picky and want a Content-Length: 0 (Firefox, Safari)
> | or they'll just sit there and wait for the connection to close.
> |
> | Problem reported by Matthias Pressfreund with wordpress.
> | Debugged with the help of weerd@ who pointed out that the problem is
> | actually browser dependent. From there it was pretty clear what the
> | problem was.
> |
> | OK?
Working fine here. ok
> |
> | diff --git server_fcgi.c server_fcgi.c
> | index 31d7322e9f7..b9dc4f6fe04 100644
> | --- server_fcgi.c
> | +++ server_fcgi.c
> | @@ -636,6 +636,13 @@ server_fcgi_header(struct client *clt, unsigned int
> code)
> | if (kv_add(&resp->http_headers,
> | "Transfer-Encoding", "chunked") == NULL)
> | return (-1);
> | + } else {
> | + key.kv_key = "Content-Length";
> | + if ((kv = kv_find(&resp->http_headers, &key)) == NULL) {
> | + if (kv_add(&resp->http_headers,
> | + "Content-Length", "0") == NULL)
> | + return (-1);
> | + }
> | }
> |
> | /* Is it a persistent connection? */
> |
> | --
> | I'm not entirely sure you are real.
> |
>
> --
> >++++++++[<++++++++++>-]<+++++++.>+++[<------>-]<.>+++[<+
> +++++++++++>-]<.>++[<------------>-]<+.--------------.[-]
> http://www.weirdnet.nl/
--
Tracey Emery