Index | Thread | Search

From:
Peter Hessler <phessler@theapt.org>
Subject:
Re: ftp: send 'Accept: */*' header
To:
Theo Buehler <tb@theobuehler.org>
Cc:
tech@openbsd.org, bket@openbsd.org
Date:
Wed, 17 Apr 2024 11:38:32 +0200

Download raw body.

Thread
From what I can tell all browsers send the accept header on every
request, so this is very safe for us to send.

OK

On 2024 Apr 17 (Wed) at 10:24:44 +0100 (+0100), Theo Buehler wrote:
:Ports bulk builders ran across a server config that would refuse
:downloads without accept header, presumably before there is no default
:fallback for no MIME type in their apache config's content negotiation:
:
:$ ftp  https://download.filezilla-project.org/client/FileZilla_3.67.0_src.tar.xz
:Trying 2a01:4f8:242:52d0::2...
:Requesting https://download.filezilla-project.org/client/FileZilla_3.67.0_src.tar.xz
:ftp: Error retrieving https://download.filezilla-project.org/client/FileZilla_3.67.0_src.tar.xz: 403 Forbidden
:
:The patch below adds adds the (optional per spec) accept header to
:signal we accept all MIME types, with which the download succeeds:
:
:$ ftp  https://download.filezilla-project.org/client/FileZilla_3.67.0_src.tar.xz
:Trying 2a01:4f8:242:52d0::2...
:Requesting https://download.filezilla-project.org/client/FileZilla_3.67.0_src.tar.xz
:100% |**********************************************************************|  3963 KB    00:01
:4058264 bytes received in 1.75 seconds (2.20 MB/s)
:
:I'm not sure how much testing for this is required. I also only tested
:the non-proxy path.
:
:Index: fetch.c
:===================================================================
:RCS file: /cvs/src/usr.bin/ftp/fetch.c,v
:diff -u -p -r1.216 fetch.c
:--- fetch.c	28 Jun 2023 17:35:06 -0000	1.216
:+++ fetch.c	17 Apr 2024 09:17:27 -0000
:@@ -705,7 +705,7 @@ noslash:
: 		 */
: 		ftp_printf(fin, "GET %s HTTP/1.1\r\n"
: 		    "Connection: close\r\n"
:-		    "Host: %s\r\n%s%s\r\n",
:+		    "Host: %s\r\n%s%s\r\nAccept: */*\r\n",
: 		    epath, proxyhost, buf ? buf : "", httpuseragent);
: 		if (credentials)
: 			ftp_printf(fin, "Authorization: Basic %s\r\n",
:@@ -773,7 +773,7 @@ noslash:
: 			ftp_printf(fin, "\r\nIf-Modified-Since: %s", tmbuf);
: #endif /* SMALL */
: 
:-		ftp_printf(fin, "\r\n%s%s\r\n",
:+		ftp_printf(fin, "\r\n%s%s\r\nAccept: */*\r\n",
: 		    buf ? buf : "", httpuseragent);
: 		if (credentials)
: 			ftp_printf(fin, "Authorization: Basic %s\r\n",
:

-- 
Q:  Why do ducks have flat feet?
A:  To stamp out forest fires.

Q:  Why do elephants have flat feet?
A:  To stamp out flaming ducks.