Repair domain-change detection on HTTP redirect.

Also added debug statements.
This commit is contained in:
tastytea 2019-08-21 07:28:28 +02:00
parent c48c1a66f2
commit 5ddea09924
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
1 changed files with 4 additions and 3 deletions

View File

@ -139,7 +139,6 @@ return_call API::http::request_common(const http_method &meth,
{ {
string method; string method;
// TODO: operator string on http_method?
switch (meth) switch (meth)
{ {
case http_method::GET: case http_method::GET:
@ -216,16 +215,17 @@ return_call API::http::request_common(const http_method &meth,
case 303: // HTTPResponse::HTTP_SEE_OTHER case 303: // HTTPResponse::HTTP_SEE_OTHER
case 307: // HTTPResponse::HTTP_TEMPORARY_REDIRECT case 307: // HTTPResponse::HTTP_TEMPORARY_REDIRECT
{ {
ttdebug << "HTTP redirect.\n";
string location = response.get("Location"); string location = response.get("Location");
// TODO: Test HTTP redirects.
if (location.substr(0, 4) == "http") if (location.substr(0, 4) == "http")
{ // Remove protocol and instance from path. { // Remove protocol and instance from path.
size_t pos1 = location.find("//") + 2; size_t pos1 = location.find("//") + 2;
size_t pos2 = location.find('/', pos1); size_t pos2 = location.find('/', pos1);
if (location.substr(pos1, pos2) != _instance) if (location.substr(pos1, pos2 - pos1) != _instance)
{ // Return new location if the domain changed. { // Return new location if the domain changed.
ttdebug << "New location is on another domain.\n";
return { 78, "Remote address changed", http_code, return { 78, "Remote address changed", http_code,
location }; location };
} }
@ -239,6 +239,7 @@ return_call API::http::request_common(const http_method &meth,
} }
else else
{ {
ttdebug << "Following temporary redirect: " << location << '\n';
return request_common(meth, location, formdata, answer); return request_common(meth, location, formdata, answer);
} }
} }