From: Tobias Gruetzmacher tobias-git@23.gs
--- dlls/wininet/http.c | 10 +++++++--- include/wininet.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c index 48bfe35866a..497a582ff89 100644 --- a/dlls/wininet/http.c +++ b/dlls/wininet/http.c @@ -5206,12 +5206,14 @@ static DWORD HTTP_HttpSendRequestW(http_request_t *request, LPCWSTR lpszHeaders, case HTTP_STATUS_MOVED: case HTTP_STATUS_REDIRECT_KEEP_VERB: case HTTP_STATUS_REDIRECT_METHOD: + case HTTP_STATUS_PERMANENT_REDIRECT: new_url = get_redirect_url(request); if(!new_url) break;
if (wcscmp(request->verb, L"GET") && wcscmp(request->verb, L"HEAD") && - request->status_code != HTTP_STATUS_REDIRECT_KEEP_VERB) + request->status_code != HTTP_STATUS_REDIRECT_KEEP_VERB && + request->status_code != HTTP_STATUS_PERMANENT_REDIRECT) { free(request->verb); request->verb = wcsdup(L"GET"); @@ -5401,7 +5403,8 @@ static DWORD HTTP_HttpEndRequestW(http_request_t *request, DWORD dwFlags, DWORD_ case HTTP_STATUS_REDIRECT: case HTTP_STATUS_MOVED: case HTTP_STATUS_REDIRECT_METHOD: - case HTTP_STATUS_REDIRECT_KEEP_VERB: { + case HTTP_STATUS_REDIRECT_KEEP_VERB: + case HTTP_STATUS_PERMANENT_REDIRECT: { WCHAR *new_url;
new_url = get_redirect_url(request); @@ -5409,7 +5412,8 @@ static DWORD HTTP_HttpEndRequestW(http_request_t *request, DWORD dwFlags, DWORD_ break;
if (wcscmp(request->verb, L"GET") && wcscmp(request->verb, L"HEAD") && - request->status_code != HTTP_STATUS_REDIRECT_KEEP_VERB) + request->status_code != HTTP_STATUS_REDIRECT_KEEP_VERB && + request->status_code != HTTP_STATUS_PERMANENT_REDIRECT) { free(request->verb); request->verb = wcsdup(L"GET"); diff --git a/include/wininet.h b/include/wininet.h index 0de2b830812..0537585adf8 100644 --- a/include/wininet.h +++ b/include/wininet.h @@ -1242,6 +1242,7 @@ BOOLAPI GopherGetAttributeW(HINTERNET ,LPCWSTR ,LPCWSTR ,LPBYTE , #define HTTP_STATUS_NOT_MODIFIED 304 #define HTTP_STATUS_USE_PROXY 305 #define HTTP_STATUS_REDIRECT_KEEP_VERB 307 +#define HTTP_STATUS_PERMANENT_REDIRECT 308 #define HTTP_STATUS_BAD_REQUEST 400 #define HTTP_STATUS_DENIED 401 #define HTTP_STATUS_PAYMENT_REQ 402