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)
Dec 20 2023, 12:53 AM
Unknown Object (File)
Sep 30 2023, 2:29 PM
Unknown Object (File)
Aug 13 2023, 12:47 PM
Unknown Object (File)
Aug 3 2023, 2:40 AM
Unknown Object (File)
Jun 15 2023, 12:50 AM
Unknown Object (File)
Jan 12 2023, 2:33 PM
Unknown Object (File)
Nov 28 2022, 10:57 AM
Unknown Object (File)
Oct 4 2016, 4:16 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.