Don't deny non-temporary redirects if the -A option is set (per

the man page) [0]

While here add support for draft-reschke-http-status-308-07

PR:		172451 [0]
Submitted by:	gcooper [0]
Reviewed by:	des
Approved by:	cperciva
MFC after:	1 week
This commit is contained in:
eadler 2012-10-22 03:00:10 +00:00
parent e82cfe8e30
commit f647c87f9c
2 changed files with 13 additions and 2 deletions

View File

@ -104,6 +104,7 @@ __FBSDID("$FreeBSD$");
#define HTTP_SEE_OTHER 303
#define HTTP_NOT_MODIFIED 304
#define HTTP_TEMP_REDIRECT 307
#define HTTP_PERM_REDIRECT 308
#define HTTP_NEED_AUTH 401
#define HTTP_NEED_PROXY_AUTH 407
#define HTTP_BAD_RANGE 416
@ -1524,8 +1525,7 @@ http_request(struct url *URL, const char *op, struct url_stat *us,
/* try the provided URL first */
url = URL;
/* if the A flag is set, we only get one try */
n = noredirect ? 1 : MAX_REDIRECT;
n = MAX_REDIRECT;
i = 0;
e = HTTP_PROTOCOL_ERROR;
@ -1772,6 +1772,16 @@ http_request(struct url *URL, const char *op, struct url_stat *us,
case hdr_location:
if (!HTTP_REDIRECT(conn->err))
break;
/*
* if the A flag is set, we don't follow
* temporary redirects.
*/
if (noredirect &&
conn->err != HTTP_MOVED_PERM &&
conn->err != HTTP_PERM_REDIRECT) {
n = 1;
break;
}
if (new)
free(new);
if (verbose)

View File

@ -18,6 +18,7 @@
304 OK Not Modified
305 INFO Use Proxy
307 MOVED Temporary Redirect
308 MOVED Permanent Redirect
400 PROTO Bad Request
401 AUTH Unauthorized
402 AUTH Payment Required