mirror of
https://github.com/bitwarden/server.git
synced 2025-04-21 21:15:10 -05:00
cleanup recursion and location header
This commit is contained in:
parent
e1df06ec33
commit
06db27ae19
@ -264,7 +264,7 @@ namespace Bit.Icons.Services
|
|||||||
private async Task<HttpResponseMessage> FollowRedirectsAsync(HttpResponseMessage response,
|
private async Task<HttpResponseMessage> FollowRedirectsAsync(HttpResponseMessage response,
|
||||||
int maxFollowCount, int followCount = 0)
|
int maxFollowCount, int followCount = 0)
|
||||||
{
|
{
|
||||||
if(response.IsSuccessStatusCode || followCount > maxFollowCount)
|
if(response == null || response.IsSuccessStatusCode || followCount > maxFollowCount)
|
||||||
{
|
{
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -279,35 +279,31 @@ namespace Bit.Icons.Services
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(response.Headers.Location != null)
|
Uri location = null;
|
||||||
|
if(response.Headers.Location.IsAbsoluteUri)
|
||||||
{
|
{
|
||||||
var locationHeader = response.Headers.Location.ToString();
|
location = response.Headers.Location;
|
||||||
if(!Uri.TryCreate(locationHeader, UriKind.Absolute, out Uri location))
|
}
|
||||||
{
|
else
|
||||||
if(Uri.TryCreate(locationHeader, UriKind.Relative, out Uri relLocation))
|
{
|
||||||
{
|
var requestUri = response.RequestMessage.RequestUri;
|
||||||
var requestUri = response.RequestMessage.RequestUri;
|
location = ResolveUri($"{requestUri.Scheme}://{requestUri.Host}",
|
||||||
location = ResolveUri($"{requestUri.Scheme}://{requestUri.Host}", relLocation.OriginalString);
|
response.Headers.Location.OriginalString);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Cleanup(response);
|
Cleanup(response);
|
||||||
var newResponse = await GetAsync(location);
|
var newResponse = await GetAsync(location);
|
||||||
if(newResponse != null)
|
if(newResponse != null)
|
||||||
|
{
|
||||||
|
followCount++;
|
||||||
|
var redirectedResponse = await FollowRedirectsAsync(newResponse, maxFollowCount, followCount);
|
||||||
|
if(redirectedResponse != null)
|
||||||
{
|
{
|
||||||
var redirectedResponse = await FollowRedirectsAsync(newResponse, maxFollowCount, followCount++);
|
if(redirectedResponse != newResponse)
|
||||||
if(redirectedResponse != null)
|
|
||||||
{
|
{
|
||||||
if(redirectedResponse != newResponse)
|
Cleanup(newResponse);
|
||||||
{
|
|
||||||
Cleanup(newResponse);
|
|
||||||
}
|
|
||||||
return redirectedResponse;
|
|
||||||
}
|
}
|
||||||
|
return redirectedResponse;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user