Hi,

I can confirm this fix makes my Andriod Nextcloud client version 3.16 (May 5 release) work with OpenBSD 6.9.

Thanks very much!

Cheers,
Steve W.

On 14/05/2021 11:07 a.m., Florian Obser wrote:
On 2021-05-13 22:00 +01, Chris Narkiewicz <he...@ezaquarii.com> wrote:
I did this when investigating the problem. Nginx returns 204 and no
Transfer-Encoding header. Httpd returns 204 and
Transfer-Encoding: chunked and no Content-Length.

Since I'm familiar with the Java/Kotlin code on the client side, and
stepped through it with a debugger, I know that chunked encoding is
the root cause, causing the client to return reply without content
length (signalled as -1).

Or maybe the answer is just: nginx doesn't do chunked encoding?
You can check by doing curl -v https://demo1.nextcloud.com/index.php/204
and the same with something that runs on httpd.

oh, it's 204 no content. I missed that.
The demo url (apparently running appache) doesn't return a
Content-Lenght, either.

Anyway, trying to chunk encode an empty body is not going to work well.

This is making the spice flow again:

diff --git server_fcgi.c server_fcgi.c
index 8d3b581568f..0ac80c27d11 100644
--- server_fcgi.c
+++ server_fcgi.c
@@ -615,6 +615,10 @@ server_fcgi_header(struct client *clt, unsigned int code)
        if (kv_add(&resp->http_headers, "Server", HTTPD_SERVERNAME) == NULL)
                return (-1);
+ /* we cannot chunk-encode no-content */
+       if (code == 204)
+               clt->clt_fcgi.chunked = 0;
+
        /* Set chunked encoding */
        if (clt->clt_fcgi.chunked) {
                /* XXX Should we keep and handle Content-Length instead? */



Cheerio,
Chris


Reply via email to