Bug 1510580 - Use nsIURIFixup in netwerk/protocol/http, r=valentin

This commit is contained in:
Andrea Marchesini 2018-11-28 18:05:52 +01:00
Родитель df66599cf0
Коммит a91ebb7cd1
2 изменённых файлов: 24 добавлений и 8 удалений

Просмотреть файл

@ -68,6 +68,7 @@
#include "nsIXULRuntime.h"
#include "nsICacheInfoChannel.h"
#include "nsIDOMWindowUtils.h"
#include "nsIURIFixup.h"
#include "nsHttpChannel.h"
#include "nsRedirectHistoryEntry.h"
#include "nsServerTiming.h"
@ -1905,10 +1906,18 @@ HttpBaseChannel::SetReferrerWithPolicy(nsIURI *referrer,
// strip away any userpass; we don't want to be giving out passwords ;-)
// This is required by Referrer Policy stripping algorithm.
rv = NS_MutateURI(clone)
.SetUserPass(EmptyCString())
.Finalize(clone);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIURIFixup> urifixup = services::GetURIFixup();
if (NS_WARN_IF(!urifixup)) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIURI> exposableURI;
rv = urifixup->CreateExposableURI(clone, getter_AddRefs(exposableURI));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
clone = exposableURI;
// 0: full URI
// 1: scheme+host+port+path

Просмотреть файл

@ -82,6 +82,7 @@
#include "nsIHttpChannelInternal.h"
#include "nsIPrompt.h"
#include "nsInputStreamPump.h"
#include "nsIURIFixup.h"
#include "nsURLHelper.h"
#include "nsISocketTransport.h"
#include "nsIStreamConverterService.h"
@ -1113,11 +1114,17 @@ nsHttpChannel::SetupTransaction()
if (NS_FAILED(rv)) return rv;
if (!buf.IsEmpty() && ((strncmp(mSpec.get(), "http:", 5) == 0) ||
strncmp(mSpec.get(), "https:", 6) == 0)) {
nsCOMPtr<nsIURIFixup> urifixup = services::GetURIFixup();
if (NS_WARN_IF(!urifixup)) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIURI> tempURI;
rv = NS_MutateURI(mURI)
.SetUserPass(EmptyCString())
.Finalize(tempURI);
if (NS_FAILED(rv)) return rv;
nsresult rv = urifixup->CreateExposableURI(mURI, getter_AddRefs(tempURI));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = tempURI->GetAsciiSpec(path);
if (NS_FAILED(rv)) return rv;
requestURI = &path;