зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1682552 - Add a probe to understand the channel successful rate when https rr is used r=necko-reviewers,dragana
Differential Revision: https://phabricator.services.mozilla.com/D99916
This commit is contained in:
Родитель
6fa129d883
Коммит
880ee627a1
|
@ -61,8 +61,13 @@ enum HTTPSSVC_RECEIVED_STAGE : uint32_t {
|
|||
HTTPSSVC_WITHOUT_IPHINT_RECEIVED_STAGE_1 = 4,
|
||||
HTTPSSVC_WITH_IPHINT_RECEIVED_STAGE_2 = 5,
|
||||
HTTPSSVC_WITHOUT_IPHINT_RECEIVED_STAGE_2 = 6,
|
||||
HTTPSSVC_NOT_USED = 7,
|
||||
HTTPSSVC_NO_USABLE_RECORD = 8,
|
||||
};
|
||||
|
||||
#define HTTPS_RR_IS_USED(s) \
|
||||
(s > HTTPSSVC_NOT_PRESENT && s < HTTPSSVC_WITH_IPHINT_RECEIVED_STAGE_2)
|
||||
|
||||
// Required buffer size for text form of an IP address.
|
||||
// Includes space for null termination. We make our own contants
|
||||
// because we don't want higher-level code depending on things
|
||||
|
|
|
@ -483,15 +483,13 @@ HttpTransactionChild::OnStartRequest(nsIRequest* aRequest) {
|
|||
int32_t proxyConnectResponseCode =
|
||||
mTransaction->GetProxyConnectResponseCode();
|
||||
|
||||
Maybe<uint32_t> stage = mTransaction->HTTPSSVCReceivedStage();
|
||||
|
||||
Unused << SendOnStartRequest(status, optionalHead, serializedSecurityInfoOut,
|
||||
mTransaction->ProxyConnectFailed(),
|
||||
ToTimingStructArgs(mTransaction->Timings()),
|
||||
proxyConnectResponseCode, dataForSniffer,
|
||||
optionalAltSvcUsed, !!mDataBridgeParent,
|
||||
mTransaction->TakeRestartedState(), stage,
|
||||
mTransaction->GetSupportsHTTP3());
|
||||
Unused << SendOnStartRequest(
|
||||
status, optionalHead, serializedSecurityInfoOut,
|
||||
mTransaction->ProxyConnectFailed(),
|
||||
ToTimingStructArgs(mTransaction->Timings()), proxyConnectResponseCode,
|
||||
dataForSniffer, optionalAltSvcUsed, !!mDataBridgeParent,
|
||||
mTransaction->TakeRestartedState(), mTransaction->HTTPSSVCReceivedStage(),
|
||||
mTransaction->GetSupportsHTTP3());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -597,8 +595,10 @@ HttpTransactionChild::OnTransportStatus(nsITransport* aTransport,
|
|||
NetAddr selfAddr;
|
||||
NetAddr peerAddr;
|
||||
bool isTrr = false;
|
||||
bool echConfigUsed = false;
|
||||
if (mTransaction) {
|
||||
mTransaction->GetNetworkAddresses(selfAddr, peerAddr, isTrr);
|
||||
mTransaction->GetNetworkAddresses(selfAddr, peerAddr, isTrr,
|
||||
echConfigUsed);
|
||||
} else {
|
||||
nsCOMPtr<nsISocketTransport> socketTransport =
|
||||
do_QueryInterface(aTransport);
|
||||
|
@ -606,9 +606,10 @@ HttpTransactionChild::OnTransportStatus(nsITransport* aTransport,
|
|||
socketTransport->GetSelfAddr(&selfAddr);
|
||||
socketTransport->GetPeerAddr(&peerAddr);
|
||||
socketTransport->ResolvedByTRR(&isTrr);
|
||||
socketTransport->GetEchConfigUsed(&echConfigUsed);
|
||||
}
|
||||
}
|
||||
arg.emplace(selfAddr, peerAddr, isTrr);
|
||||
arg.emplace(selfAddr, peerAddr, isTrr, echConfigUsed);
|
||||
}
|
||||
|
||||
Unused << SendOnTransportStatus(aStatus, aProgress, aProgressMax, arg);
|
||||
|
|
|
@ -88,6 +88,7 @@ HttpTransactionParent::HttpTransactionParent(bool aIsDocumentLoad)
|
|||
mOnStartRequestCalled(false),
|
||||
mOnStopRequestCalled(false),
|
||||
mResolvedByTRR(false),
|
||||
mEchConfigUsed(false),
|
||||
mProxyConnectResponseCode(0),
|
||||
mChannelId(0),
|
||||
mDataSentToChildProcess(false),
|
||||
|
@ -304,12 +305,12 @@ void HttpTransactionParent::SetDNSWasRefreshed() {
|
|||
}
|
||||
|
||||
void HttpTransactionParent::GetNetworkAddresses(NetAddr& self, NetAddr& peer,
|
||||
bool& aResolvedByTRR) {
|
||||
bool& aResolvedByTRR,
|
||||
bool& aEchConfigUsed) {
|
||||
self = mSelfAddr;
|
||||
peer = mPeerAddr;
|
||||
|
||||
// TODO: will be implemented later in bug 1600254.
|
||||
aResolvedByTRR = false;
|
||||
aResolvedByTRR = mResolvedByTRR;
|
||||
aEchConfigUsed = mEchConfigUsed;
|
||||
}
|
||||
|
||||
bool HttpTransactionParent::HasStickyConnection() const {
|
||||
|
@ -378,7 +379,7 @@ bool HttpTransactionParent::TakeRestartedState() {
|
|||
return result;
|
||||
}
|
||||
|
||||
Maybe<uint32_t> HttpTransactionParent::HTTPSSVCReceivedStage() {
|
||||
uint32_t HttpTransactionParent::HTTPSSVCReceivedStage() {
|
||||
return mHTTPSSVCReceivedStage;
|
||||
}
|
||||
|
||||
|
@ -447,20 +448,19 @@ mozilla::ipc::IPCResult HttpTransactionParent::RecvOnStartRequest(
|
|||
const int32_t& aProxyConnectResponseCode,
|
||||
nsTArray<uint8_t>&& aDataForSniffer, const Maybe<nsCString>& aAltSvcUsed,
|
||||
const bool& aDataToChildProcess, const bool& aRestarted,
|
||||
Maybe<uint32_t>&& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3) {
|
||||
const uint32_t& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3) {
|
||||
mEventQ->RunOrEnqueue(new NeckoTargetChannelFunctionEvent(
|
||||
this, [self = UnsafePtr<HttpTransactionParent>(this), aStatus,
|
||||
aResponseHead, aSecurityInfoSerialization, aProxyConnectFailed,
|
||||
aTimings, aProxyConnectResponseCode,
|
||||
aDataForSniffer = CopyableTArray{std::move(aDataForSniffer)},
|
||||
aAltSvcUsed, aDataToChildProcess, aRestarted,
|
||||
aHTTPSSVCReceivedStage{std::move(aHTTPSSVCReceivedStage)},
|
||||
aSupportsHttp3]() mutable {
|
||||
aHTTPSSVCReceivedStage, aSupportsHttp3]() mutable {
|
||||
self->DoOnStartRequest(
|
||||
aStatus, aResponseHead, aSecurityInfoSerialization,
|
||||
aProxyConnectFailed, aTimings, aProxyConnectResponseCode,
|
||||
std::move(aDataForSniffer), aAltSvcUsed, aDataToChildProcess,
|
||||
aRestarted, std::move(aHTTPSSVCReceivedStage), aSupportsHttp3);
|
||||
aRestarted, aHTTPSSVCReceivedStage, aSupportsHttp3);
|
||||
}));
|
||||
return IPC_OK();
|
||||
}
|
||||
|
@ -490,7 +490,7 @@ void HttpTransactionParent::DoOnStartRequest(
|
|||
const int32_t& aProxyConnectResponseCode,
|
||||
nsTArray<uint8_t>&& aDataForSniffer, const Maybe<nsCString>& aAltSvcUsed,
|
||||
const bool& aDataToChildProcess, const bool& aRestarted,
|
||||
Maybe<uint32_t>&& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3) {
|
||||
const uint32_t& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3) {
|
||||
LOG(("HttpTransactionParent::DoOnStartRequest [this=%p aStatus=%" PRIx32
|
||||
"]\n",
|
||||
this, static_cast<uint32_t>(aStatus)));
|
||||
|
@ -503,7 +503,7 @@ void HttpTransactionParent::DoOnStartRequest(
|
|||
|
||||
mStatus = aStatus;
|
||||
mDataSentToChildProcess = aDataToChildProcess;
|
||||
mHTTPSSVCReceivedStage = std::move(aHTTPSSVCReceivedStage);
|
||||
mHTTPSSVCReceivedStage = aHTTPSSVCReceivedStage;
|
||||
mSupportsHTTP3 = aSupportsHttp3;
|
||||
|
||||
if (!aSecurityInfoSerialization.IsEmpty()) {
|
||||
|
@ -547,6 +547,7 @@ mozilla::ipc::IPCResult HttpTransactionParent::RecvOnTransportStatus(
|
|||
mSelfAddr = aNetworkAddressArg->selfAddr();
|
||||
mPeerAddr = aNetworkAddressArg->peerAddr();
|
||||
mResolvedByTRR = aNetworkAddressArg->resolvedByTRR();
|
||||
mEchConfigUsed = aNetworkAddressArg->echConfigUsed();
|
||||
}
|
||||
mEventsink->OnTransportStatus(nullptr, aStatus, aProgress, aProgressMax);
|
||||
return IPC_OK();
|
||||
|
|
|
@ -54,7 +54,7 @@ class HttpTransactionParent final : public PHttpTransactionParent,
|
|||
const int32_t& aProxyConnectResponseCode,
|
||||
nsTArray<uint8_t>&& aDataForSniffer, const Maybe<nsCString>& aAltSvcUsed,
|
||||
const bool& aDataToChildProcess, const bool& aRestarted,
|
||||
Maybe<uint32_t>&& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3);
|
||||
const uint32_t& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3);
|
||||
mozilla::ipc::IPCResult RecvOnTransportStatus(
|
||||
const nsresult& aStatus, const int64_t& aProgress,
|
||||
const int64_t& aProgressMax,
|
||||
|
@ -98,7 +98,7 @@ class HttpTransactionParent final : public PHttpTransactionParent,
|
|||
const int32_t& aProxyConnectResponseCode,
|
||||
nsTArray<uint8_t>&& aDataForSniffer, const Maybe<nsCString>& aAltSvcUsed,
|
||||
const bool& aDataToChildProcess, const bool& aRestarted,
|
||||
Maybe<uint32_t>&& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3);
|
||||
const uint32_t& aHTTPSSVCReceivedStage, const bool& aSupportsHttp3);
|
||||
void DoOnDataAvailable(const nsCString& aData, const uint64_t& aOffset,
|
||||
const uint32_t& aCount);
|
||||
void DoOnStopRequest(
|
||||
|
@ -137,6 +137,7 @@ class HttpTransactionParent final : public PHttpTransactionParent,
|
|||
bool mOnStartRequestCalled;
|
||||
bool mOnStopRequestCalled;
|
||||
bool mResolvedByTRR;
|
||||
bool mEchConfigUsed = false;
|
||||
int32_t mProxyConnectResponseCode;
|
||||
uint64_t mChannelId;
|
||||
bool mDataSentToChildProcess;
|
||||
|
@ -155,7 +156,7 @@ class HttpTransactionParent final : public PHttpTransactionParent,
|
|||
OnPushCallback mOnPushCallback;
|
||||
nsTArray<uint8_t> mDataForSniffer;
|
||||
std::function<void()> mCallOnResume;
|
||||
Maybe<uint32_t> mHTTPSSVCReceivedStage;
|
||||
uint32_t mHTTPSSVCReceivedStage;
|
||||
RefPtr<nsHttpConnectionInfo> mConnInfo;
|
||||
bool mSupportsHTTP3 = false;
|
||||
};
|
||||
|
|
|
@ -108,7 +108,8 @@ class HttpTransactionShell : public nsISupports {
|
|||
virtual void SetSecurityCallbacks(nsIInterfaceRequestor* aCallbacks) = 0;
|
||||
|
||||
virtual void GetNetworkAddresses(NetAddr& self, NetAddr& peer,
|
||||
bool& aResolvedByTRR) = 0;
|
||||
bool& aResolvedByTRR,
|
||||
bool& aEchConfigUsed) = 0;
|
||||
|
||||
// Functions for Timing interface
|
||||
virtual mozilla::TimeStamp GetDomainLookupStart() = 0;
|
||||
|
@ -152,7 +153,7 @@ class HttpTransactionShell : public nsISupports {
|
|||
virtual HttpTransactionParent* AsHttpTransactionParent() = 0;
|
||||
|
||||
virtual bool TakeRestartedState() = 0;
|
||||
virtual Maybe<uint32_t> HTTPSSVCReceivedStage() = 0;
|
||||
virtual uint32_t HTTPSSVCReceivedStage() = 0;
|
||||
|
||||
virtual bool Http2Disabled() const = 0;
|
||||
virtual bool Http3Disabled() const = 0;
|
||||
|
@ -185,7 +186,8 @@ NS_DEFINE_STATIC_IID_ACCESSOR(HttpTransactionShell, HTTPTRANSACTIONSHELL_IID)
|
|||
virtual void SetSecurityCallbacks(nsIInterfaceRequestor* aCallbacks) \
|
||||
override; \
|
||||
virtual void GetNetworkAddresses(NetAddr& self, NetAddr& peer, \
|
||||
bool& aResolvedByTRR) override; \
|
||||
bool& aResolvedByTRR, bool& aEchConfigUsed) \
|
||||
override; \
|
||||
virtual mozilla::TimeStamp GetDomainLookupStart() override; \
|
||||
virtual mozilla::TimeStamp GetDomainLookupEnd() override; \
|
||||
virtual mozilla::TimeStamp GetConnectStart() override; \
|
||||
|
@ -214,7 +216,7 @@ NS_DEFINE_STATIC_IID_ACCESSOR(HttpTransactionShell, HTTPTRANSACTIONSHELL_IID)
|
|||
virtual nsHttpTransaction* AsHttpTransaction() override; \
|
||||
virtual HttpTransactionParent* AsHttpTransactionParent() override; \
|
||||
virtual bool TakeRestartedState() override; \
|
||||
virtual Maybe<uint32_t> HTTPSSVCReceivedStage() override; \
|
||||
virtual uint32_t HTTPSSVCReceivedStage() override; \
|
||||
virtual bool Http2Disabled() const override; \
|
||||
virtual bool Http3Disabled() const override; \
|
||||
virtual already_AddRefed<nsHttpConnectionInfo> GetConnInfo() const override; \
|
||||
|
|
|
@ -30,6 +30,7 @@ struct NetworkAddressArg {
|
|||
NetAddr selfAddr;
|
||||
NetAddr peerAddr;
|
||||
bool resolvedByTRR;
|
||||
bool echConfigUsed;
|
||||
};
|
||||
|
||||
refcounted protocol PHttpTransaction
|
||||
|
@ -47,7 +48,7 @@ parent:
|
|||
nsCString? altSvcUsed,
|
||||
bool dataToChildProcess,
|
||||
bool restarted,
|
||||
uint32_t? HTTPSSVCReceivedStage,
|
||||
uint32_t HTTPSSVCReceivedStage,
|
||||
bool supportsHttp3);
|
||||
async OnTransportStatus(nsresult status,
|
||||
int64_t progress,
|
||||
|
|
|
@ -7421,13 +7421,20 @@ nsHttpChannel::OnStartRequest(nsIRequest* request) {
|
|||
mSecurityInfo = mTransaction->SecurityInfo();
|
||||
}
|
||||
|
||||
uint32_t stage = mTransaction->HTTPSSVCReceivedStage();
|
||||
if (!LoadHTTPSSVCTelemetryReported()) {
|
||||
Maybe<uint32_t> stage = mTransaction->HTTPSSVCReceivedStage();
|
||||
if (stage) {
|
||||
if (stage != HTTPSSVC_NOT_USED) {
|
||||
Telemetry::Accumulate(Telemetry::DNS_HTTPSSVC_RECORD_RECEIVING_STAGE,
|
||||
*stage);
|
||||
stage);
|
||||
}
|
||||
}
|
||||
|
||||
if (HTTPS_RR_IS_USED(stage)) {
|
||||
Telemetry::Accumulate(
|
||||
Telemetry::HTTP_CHANNEL_ONSTART_SUCCESS_HTTPS_RR,
|
||||
LoadEchConfigUsed() ? "echConfig-used"_ns : "echConfig-not-used"_ns,
|
||||
NS_SUCCEEDED(mStatus));
|
||||
}
|
||||
}
|
||||
|
||||
// don't enter this block if we're reading from the cache...
|
||||
|
@ -8338,17 +8345,21 @@ nsHttpChannel::OnTransportStatus(nsITransport* trans, nsresult status,
|
|||
if (status == NS_NET_STATUS_CONNECTED_TO ||
|
||||
status == NS_NET_STATUS_WAITING_FOR) {
|
||||
bool isTrr = false;
|
||||
bool echConfigUsed = false;
|
||||
if (mTransaction) {
|
||||
mTransaction->GetNetworkAddresses(mSelfAddr, mPeerAddr, isTrr);
|
||||
mTransaction->GetNetworkAddresses(mSelfAddr, mPeerAddr, isTrr,
|
||||
echConfigUsed);
|
||||
} else {
|
||||
nsCOMPtr<nsISocketTransport> socketTransport = do_QueryInterface(trans);
|
||||
if (socketTransport) {
|
||||
socketTransport->GetSelfAddr(&mSelfAddr);
|
||||
socketTransport->GetPeerAddr(&mPeerAddr);
|
||||
socketTransport->ResolvedByTRR(&isTrr);
|
||||
socketTransport->GetEchConfigUsed(&echConfigUsed);
|
||||
}
|
||||
}
|
||||
StoreResolvedByTRR(isTrr);
|
||||
StoreEchConfigUsed(echConfigUsed);
|
||||
}
|
||||
|
||||
// block socket status event after Cancel or OnStopRequest has been called.
|
||||
|
|
|
@ -744,7 +744,8 @@ class nsHttpChannel final : public HttpBaseChannel,
|
|||
MOZ_ATOMIC_BITFIELDS(mAtomicBitfields6, 32, (
|
||||
// Only set to true when we receive an HTTPSSVC record before the
|
||||
// transaction is created.
|
||||
(uint32_t, HTTPSSVCTelemetryReported, 1)
|
||||
(uint32_t, HTTPSSVCTelemetryReported, 1),
|
||||
(uint32_t, EchConfigUsed, 1)
|
||||
))
|
||||
// clang-format on
|
||||
|
||||
|
|
|
@ -136,12 +136,14 @@ nsHttpTransaction::nsHttpTransaction()
|
|||
mSynchronousRatePaceRequest(false),
|
||||
mClassOfService(0),
|
||||
mResolvedByTRR(false),
|
||||
mEchConfigUsed(false),
|
||||
m0RTTInProgress(false),
|
||||
mDoNotTryEarlyData(false),
|
||||
mEarlyDataDisposition(EARLY_NONE),
|
||||
mFastOpenStatus(TFO_NOT_TRIED),
|
||||
mTrafficCategory(HttpTrafficCategory::eInvalid),
|
||||
mProxyConnectResponseCode(0),
|
||||
mHTTPSSVCReceivedStage(HTTPSSVC_NOT_USED),
|
||||
m421Received(false),
|
||||
mDontRetryWithDirectRoute(false),
|
||||
mFastFallbackTriggered(false),
|
||||
|
@ -442,7 +444,7 @@ nsresult nsHttpTransaction::Init(
|
|||
}
|
||||
|
||||
if (gHttpHandler->UseHTTPSRRAsAltSvcEnabled()) {
|
||||
mHTTPSSVCReceivedStage.emplace(HTTPSSVC_NOT_PRESENT);
|
||||
mHTTPSSVCReceivedStage = HTTPSSVC_NOT_PRESENT;
|
||||
|
||||
nsCOMPtr<nsIEventTarget> target;
|
||||
Unused << gHttpHandler->GetSocketThreadTarget(getter_AddRefs(target));
|
||||
|
@ -650,6 +652,7 @@ void nsHttpTransaction::OnTransportStatus(nsITransport* transport,
|
|||
socketTransport->GetSelfAddr(&mSelfAddr);
|
||||
socketTransport->GetPeerAddr(&mPeerAddr);
|
||||
socketTransport->ResolvedByTRR(&mResolvedByTRR);
|
||||
socketTransport->GetEchConfigUsed(&mEchConfigUsed);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2850,11 +2853,13 @@ nsHttpTransaction::OnOutputStreamReady(nsIAsyncOutputStream* out) {
|
|||
}
|
||||
|
||||
void nsHttpTransaction::GetNetworkAddresses(NetAddr& self, NetAddr& peer,
|
||||
bool& aResolvedByTRR) {
|
||||
bool& aResolvedByTRR,
|
||||
bool& aEchConfigUsed) {
|
||||
MutexAutoLock lock(mLock);
|
||||
self = mSelfAddr;
|
||||
peer = mPeerAddr;
|
||||
aResolvedByTRR = mResolvedByTRR;
|
||||
aEchConfigUsed = mEchConfigUsed;
|
||||
}
|
||||
|
||||
bool nsHttpTransaction::CanDo0RTT() {
|
||||
|
@ -3112,6 +3117,12 @@ nsresult nsHttpTransaction::OnHTTPSRRAvailable(
|
|||
mDNSRequest = nullptr;
|
||||
}
|
||||
|
||||
uint32_t receivedStage = HTTPSSVC_NO_USABLE_RECORD;
|
||||
// Make sure we set the correct value to |mHTTPSSVCReceivedStage|, since we
|
||||
// also use this value to indicate whether HTTPS RR is used or not.
|
||||
auto updateHTTPSSVCReceivedStage =
|
||||
MakeScopeExit([&] { mHTTPSSVCReceivedStage = receivedStage; });
|
||||
|
||||
MakeDontWaitHTTPSSVC();
|
||||
|
||||
nsCOMPtr<nsIDNSHTTPSSVCRecord> record = aHTTPSSVCRecord;
|
||||
|
@ -3123,15 +3134,13 @@ nsresult nsHttpTransaction::OnHTTPSRRAvailable(
|
|||
Unused << record->GetHasIPAddresses(&hasIPAddress);
|
||||
|
||||
if (mActivated) {
|
||||
mHTTPSSVCReceivedStage =
|
||||
Some(hasIPAddress ? HTTPSSVC_WITH_IPHINT_RECEIVED_STAGE_2
|
||||
: HTTPSSVC_WITHOUT_IPHINT_RECEIVED_STAGE_2);
|
||||
receivedStage = hasIPAddress ? HTTPSSVC_WITH_IPHINT_RECEIVED_STAGE_2
|
||||
: HTTPSSVC_WITHOUT_IPHINT_RECEIVED_STAGE_2;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
mHTTPSSVCReceivedStage =
|
||||
Some(hasIPAddress ? HTTPSSVC_WITH_IPHINT_RECEIVED_STAGE_1
|
||||
: HTTPSSVC_WITHOUT_IPHINT_RECEIVED_STAGE_1);
|
||||
receivedStage = hasIPAddress ? HTTPSSVC_WITH_IPHINT_RECEIVED_STAGE_1
|
||||
: HTTPSSVC_WITHOUT_IPHINT_RECEIVED_STAGE_1;
|
||||
|
||||
nsCOMPtr<nsISVCBRecord> svcbRecord = aHighestPriorityRecord;
|
||||
if (!svcbRecord) {
|
||||
|
@ -3198,7 +3207,7 @@ nsresult nsHttpTransaction::OnHTTPSRRAvailable(
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
Maybe<uint32_t> nsHttpTransaction::HTTPSSVCReceivedStage() {
|
||||
uint32_t nsHttpTransaction::HTTPSSVCReceivedStage() {
|
||||
return mHTTPSSVCReceivedStage;
|
||||
}
|
||||
|
||||
|
|
|
@ -485,6 +485,7 @@ class nsHttpTransaction final : public nsAHttpTransaction,
|
|||
NetAddr mSelfAddr;
|
||||
NetAddr mPeerAddr;
|
||||
bool mResolvedByTRR;
|
||||
bool mEchConfigUsed = false;
|
||||
|
||||
bool m0RTTInProgress;
|
||||
bool mDoNotTryEarlyData;
|
||||
|
@ -509,7 +510,7 @@ class nsHttpTransaction final : public nsAHttpTransaction,
|
|||
mIDToStreamMap;
|
||||
|
||||
nsCOMPtr<nsICancelable> mDNSRequest;
|
||||
Maybe<uint32_t> mHTTPSSVCReceivedStage;
|
||||
Atomic<uint32_t, Relaxed> mHTTPSSVCReceivedStage;
|
||||
bool m421Received = false;
|
||||
nsCOMPtr<nsIDNSHTTPSSVCRecord> mHTTPSSVCRecord;
|
||||
nsTArray<RefPtr<nsISVCBRecord>> mRecordsForRetry;
|
||||
|
|
|
@ -3123,6 +3123,16 @@
|
|||
"releaseChannelCollection": "opt-out",
|
||||
"alert_emails": ["necko@mozilla.com", "vgosu@mozilla.com"]
|
||||
},
|
||||
"HTTP_CHANNEL_ONSTART_SUCCESS_HTTPS_RR" : {
|
||||
"record_in_processes": ["main"],
|
||||
"products": ["firefox", "fennec"],
|
||||
"expires_in_version": "never",
|
||||
"kind": "boolean",
|
||||
"keyed": true,
|
||||
"description": "Successfully started HTTP channels when HTTPS RR is used; Keyed by echConfig is used or not",
|
||||
"bug_numbers": [1682552],
|
||||
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"]
|
||||
},
|
||||
"HTTP_CONNECTION_ENTRY_CACHE_HIT_1" : {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec"],
|
||||
|
|
Загрузка…
Ссылка в новой задаче