Bug 1545420 - Allow extensions to set Proxy-Authorization and connection isolation key through proxy.onRequest, r=dragana,mixedpuppy+mixedpuppy
Differential Revision: https://phabricator.services.mozilla.com/D29825
This commit is contained in:
@@ -1601,20 +1601,24 @@ nsProtocolProxyService::AsyncResolve(nsISupports* channelOrURI, uint32_t flags,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsProtocolProxyService::NewProxyInfo(const nsACString& aType,
|
||||
const nsACString& aHost, int32_t aPort,
|
||||
uint32_t aFlags, uint32_t aFailoverTimeout,
|
||||
nsIProxyInfo* aFailoverProxy,
|
||||
nsIProxyInfo** aResult) {
|
||||
nsProtocolProxyService::NewProxyInfo(
|
||||
const nsACString& aType, const nsACString& aHost, int32_t aPort,
|
||||
const nsACString& aProxyAuthorizationHeader,
|
||||
const nsACString& aConnectionIsolationKey, uint32_t aFlags,
|
||||
uint32_t aFailoverTimeout, nsIProxyInfo* aFailoverProxy,
|
||||
nsIProxyInfo** aResult) {
|
||||
return NewProxyInfoWithAuth(aType, aHost, aPort, EmptyCString(),
|
||||
EmptyCString(), aFlags, aFailoverTimeout,
|
||||
EmptyCString(), aProxyAuthorizationHeader,
|
||||
aConnectionIsolationKey, aFlags, aFailoverTimeout,
|
||||
aFailoverProxy, aResult);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsProtocolProxyService::NewProxyInfoWithAuth(
|
||||
const nsACString& aType, const nsACString& aHost, int32_t aPort,
|
||||
const nsACString& aUsername, const nsACString& aPassword, uint32_t aFlags,
|
||||
const nsACString& aUsername, const nsACString& aPassword,
|
||||
const nsACString& aProxyAuthorizationHeader,
|
||||
const nsACString& aConnectionIsolationKey, uint32_t aFlags,
|
||||
uint32_t aFailoverTimeout, nsIProxyInfo* aFailoverProxy,
|
||||
nsIProxyInfo** aResult) {
|
||||
static const char* types[] = {kProxyType_HTTP, kProxyType_HTTPS,
|
||||
@@ -1639,7 +1643,9 @@ nsProtocolProxyService::NewProxyInfoWithAuth(
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
return NewProxyInfo_Internal(type, aHost, aPort, aUsername, aPassword, aFlags,
|
||||
return NewProxyInfo_Internal(type, aHost, aPort, aUsername, aPassword,
|
||||
aProxyAuthorizationHeader,
|
||||
aConnectionIsolationKey, aFlags,
|
||||
aFailoverTimeout, aFailoverProxy, 0, aResult);
|
||||
}
|
||||
|
||||
@@ -1986,7 +1992,9 @@ nsresult nsProtocolProxyService::GetProtocolInfo(nsIURI* uri,
|
||||
|
||||
nsresult nsProtocolProxyService::NewProxyInfo_Internal(
|
||||
const char* aType, const nsACString& aHost, int32_t aPort,
|
||||
const nsACString& aUsername, const nsACString& aPassword, uint32_t aFlags,
|
||||
const nsACString& aUsername, const nsACString& aPassword,
|
||||
const nsACString& aProxyAuthorizationHeader,
|
||||
const nsACString& aConnectionIsolationKey, uint32_t aFlags,
|
||||
uint32_t aFailoverTimeout, nsIProxyInfo* aFailoverProxy,
|
||||
uint32_t aResolveFlags, nsIProxyInfo** aResult) {
|
||||
if (aPort <= 0) aPort = -1;
|
||||
@@ -2009,6 +2017,8 @@ nsresult nsProtocolProxyService::NewProxyInfo_Internal(
|
||||
proxyInfo->mResolveFlags = aResolveFlags;
|
||||
proxyInfo->mTimeout =
|
||||
aFailoverTimeout == UINT32_MAX ? mFailedProxyTimeout : aFailoverTimeout;
|
||||
proxyInfo->mProxyAuthorizationHeader = aProxyAuthorizationHeader;
|
||||
proxyInfo->mConnectionIsolationKey = aConnectionIsolationKey;
|
||||
failover.swap(proxyInfo->mNext);
|
||||
|
||||
NS_ADDREF(*aResult = proxyInfo);
|
||||
@@ -2175,9 +2185,9 @@ nsresult nsProtocolProxyService::Resolve_Internal(nsIChannel* channel,
|
||||
}
|
||||
|
||||
if (type) {
|
||||
rv =
|
||||
NewProxyInfo_Internal(type, *host, port, EmptyCString(), EmptyCString(),
|
||||
proxyFlags, UINT32_MAX, nullptr, flags, result);
|
||||
rv = NewProxyInfo_Internal(type, *host, port, EmptyCString(),
|
||||
EmptyCString(), EmptyCString(), EmptyCString(),
|
||||
proxyFlags, UINT32_MAX, nullptr, flags, result);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user