Page MenuHomeFreeBSD

libfetch: don't stumble on HTTP 307 temp redirects
AbandonedPublic

Authored by novel on May 1 2016, 6:19 AM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Oct 9, 11:11 AM
Unknown Object (File)
Sep 18 2025, 7:28 PM
Unknown Object (File)
Sep 12 2025, 6:41 AM
Unknown Object (File)
Sep 7 2025, 12:54 AM
Unknown Object (File)
Jul 18 2025, 4:32 AM
Unknown Object (File)
Jul 7 2025, 5:00 AM
Unknown Object (File)
Jul 4 2025, 2:21 PM
Unknown Object (File)
Jun 27 2025, 4:09 AM
Subscribers

Details

Reviewers
des
Summary

Currently, fetch(1) fails to download a file if there's HTTP 307 redirect for it.

For example:

$ fetch https://pypi.io/packages/source/p/positional/positional-1.1.0.tar.gz
fetch: https://pypi.io/packages/source/p/positional/positional-1.1.0.tar.gz: Temporary Redirect
$

However, it should not fail on redirect unless -A flag was given.

Additionally, in verbose mode it manages to download that file.

This appears to happen because in "switch (http_get_reply(conn))" in http_request_body() from http.c there's no case for HTTP_TEMP_REDIRECT, so it fails to "default" that looks like this:

1816 default:
1817 http_seterr(conn->err);
1818 if (!verbose)
1819 goto ouch;

So in verbose mode it goes further and downloads the file, because HTTP_REDIRECT() macro does include check for HTTP_TEMP_REDIRECT.

Fix by handing HTTP_TEMP_REDIRECT in the http_get_reply(conn) switch.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

novel retitled this revision from to libfetch: don't stumble on HTTP 307 temp redirects.
novel updated this object.
novel edited the test plan for this revision. (Show Details)
novel added a reviewer: des.
novel set the repository for this revision to rS FreeBSD src repository - subversion.