mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 13:25:37 +00:00
bug 1003450 - [3/3] Group Dependency Nodes require >= h2-16 r=hurley
This commit is contained in:
parent
7edbeec28f
commit
bbf86bc8fc
@ -780,9 +780,10 @@ HttpConnInfo::SetHTTP2ProtocolVersion(uint8_t pv)
|
||||
{
|
||||
if (pv == SPDY_VERSION_31) {
|
||||
protocolVersion.AssignLiteral(MOZ_UTF16("spdy/3.1"));
|
||||
} else if (pv == NS_HTTP2_DRAFT_VERSION) {
|
||||
MOZ_ASSERT (pv == NS_HTTP2_DRAFT_VERSION);
|
||||
protocolVersion.Assign(NS_LITERAL_STRING(NS_HTTP2_DRAFT_TOKEN));
|
||||
} else if (pv == HTTP_VERSION_2_DRAFT_15) {
|
||||
protocolVersion.AssignLiteral(MOZ_UTF16("h2-14/15"));
|
||||
} else if (pv == HTTP_VERSION_2_DRAFT_LATEST) {
|
||||
protocolVersion.Assign(NS_LITERAL_STRING(HTTP2_DRAFT_LATEST_TOKEN));
|
||||
} else {
|
||||
MOZ_ASSERT (pv == HTTP_VERSION_2);
|
||||
protocolVersion.Assign(MOZ_UTF16("h2"));
|
||||
|
@ -42,7 +42,8 @@ ASpdySession::NewSpdySession(uint32_t version,
|
||||
// requests as a precondition
|
||||
MOZ_ASSERT(version == SPDY_VERSION_31 ||
|
||||
version == HTTP_VERSION_2 ||
|
||||
version == NS_HTTP2_DRAFT_VERSION,
|
||||
version == HTTP_VERSION_2_DRAFT_LATEST ||
|
||||
version == HTTP_VERSION_2_DRAFT_15,
|
||||
"Unsupported spdy version");
|
||||
|
||||
// Don't do a runtime check of IsSpdyV?Enabled() here because pref value
|
||||
@ -54,8 +55,9 @@ ASpdySession::NewSpdySession(uint32_t version,
|
||||
|
||||
if (version == SPDY_VERSION_31) {
|
||||
return new SpdySession31(aTransport);
|
||||
} else if (version == NS_HTTP2_DRAFT_VERSION || version == HTTP_VERSION_2) {
|
||||
return new Http2Session(aTransport);
|
||||
} else if (version == HTTP_VERSION_2_DRAFT_LATEST || version == HTTP_VERSION_2 ||
|
||||
version == HTTP_VERSION_2_DRAFT_15) {
|
||||
return new Http2Session(aTransport, version);
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
@ -77,16 +79,16 @@ SpdyInformation::SpdyInformation()
|
||||
VersionString[1] = NS_LITERAL_CSTRING("h2");
|
||||
ALPNCallbacks[1] = Http2Session::ALPNCallback;
|
||||
|
||||
Version[2] = NS_HTTP2_DRAFT_VERSION;
|
||||
Version[2] = HTTP_VERSION_2_DRAFT_15; // 14 and 15 are aliased
|
||||
VersionString[2] = NS_LITERAL_CSTRING("h2-14");
|
||||
ALPNCallbacks[2] = Http2Session::ALPNCallback;
|
||||
|
||||
Version[3] = NS_HTTP2_DRAFT_VERSION;
|
||||
Version[3] = HTTP_VERSION_2_DRAFT_15; // 14 and 15 are aliased
|
||||
VersionString[3] = NS_LITERAL_CSTRING("h2-15");
|
||||
ALPNCallbacks[3] = Http2Session::ALPNCallback;
|
||||
|
||||
Version[4] = NS_HTTP2_DRAFT_VERSION;
|
||||
VersionString[4] = NS_LITERAL_CSTRING(NS_HTTP2_DRAFT_TOKEN);
|
||||
Version[4] = HTTP_VERSION_2_DRAFT_LATEST;
|
||||
VersionString[4] = NS_LITERAL_CSTRING(HTTP2_DRAFT_LATEST_TOKEN);
|
||||
ALPNCallbacks[4] = Http2Session::ALPNCallback;
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ do { \
|
||||
return NS_ERROR_ILLEGAL_VALUE; \
|
||||
} while (0)
|
||||
|
||||
Http2Session::Http2Session(nsISocketTransport *aSocketTransport)
|
||||
Http2Session::Http2Session(nsISocketTransport *aSocketTransport, uint32_t version)
|
||||
: mSocketTransport(aSocketTransport)
|
||||
, mSegmentReader(nullptr)
|
||||
, mSegmentWriter(nullptr)
|
||||
@ -104,6 +104,7 @@ Http2Session::Http2Session(nsISocketTransport *aSocketTransport)
|
||||
, mWaitingForSettingsAck(false)
|
||||
, mGoAwayOnPush(false)
|
||||
, mUseH2Deps(false)
|
||||
, mVersion(version)
|
||||
{
|
||||
MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread);
|
||||
|
||||
@ -126,7 +127,7 @@ Http2Session::Http2Session(nsISocketTransport *aSocketTransport)
|
||||
|
||||
mPingThreshold = gHttpHandler->SpdyPingThreshold();
|
||||
|
||||
mNegotiatedToken.AssignLiteral(NS_HTTP2_DRAFT_TOKEN);
|
||||
mNegotiatedToken.AssignLiteral(HTTP2_DRAFT_LATEST_TOKEN);
|
||||
}
|
||||
|
||||
// Copy the 32 bit number into the destination, using network byte order
|
||||
@ -876,7 +877,11 @@ Http2Session::SendHello()
|
||||
LogIO(this, nullptr, "Session Window Bump ", packet, kFrameHeaderBytes + 4);
|
||||
}
|
||||
|
||||
if (gHttpHandler->UseH2Deps() && gHttpHandler->CriticalRequestPrioritization()) {
|
||||
// draft-14 and draft-15 are the only versions we support that do not
|
||||
// allow our priority scheme. Blacklist them here - they are aliased
|
||||
// as draft-15
|
||||
if ((mVersion != HTTP_VERSION_2_DRAFT_15) &&
|
||||
gHttpHandler->UseH2Deps() && gHttpHandler->CriticalRequestPrioritization()) {
|
||||
mUseH2Deps = true;
|
||||
MOZ_ASSERT(mNextStreamID == kLeaderGroupID);
|
||||
CreatePriorityNode(kLeaderGroupID, 0, 200, "leader");
|
||||
@ -3361,7 +3366,7 @@ Http2Session::ConfirmTLSProfile()
|
||||
// Fallback to showing the draft version, just in case
|
||||
LOG3(("Http2Session::ConfirmTLSProfile %p could not get negotiated token. "
|
||||
"Falling back to draft token.", this));
|
||||
mNegotiatedToken.AssignLiteral(NS_HTTP2_DRAFT_TOKEN);
|
||||
mNegotiatedToken.AssignLiteral(HTTP2_DRAFT_LATEST_TOKEN);
|
||||
}
|
||||
|
||||
mTLSProfileConfirmed = true;
|
||||
|
@ -41,7 +41,7 @@ public:
|
||||
NS_DECL_NSAHTTPSEGMENTREADER
|
||||
NS_DECL_NSAHTTPSEGMENTWRITER
|
||||
|
||||
explicit Http2Session(nsISocketTransport *);
|
||||
Http2Session(nsISocketTransport *, uint32_t version);
|
||||
|
||||
bool AddStream(nsAHttpTransaction *, int32_t,
|
||||
bool, nsIInterfaceRequestor *);
|
||||
@ -481,6 +481,7 @@ private:
|
||||
nsCString mNegotiatedToken;
|
||||
|
||||
bool mUseH2Deps;
|
||||
uint32_t mVersion; // HTTP2_VERSION_ from nsHttp.h remove when draft support removed
|
||||
|
||||
private:
|
||||
/// connect tunnels
|
||||
|
@ -39,15 +39,16 @@ namespace net {
|
||||
// 27 was http/2-draft09, h2-10, and h2-11
|
||||
// 28 was http/2-draft12
|
||||
// 29 was http/2-draft13
|
||||
// 30 was also h2-14 and -15. They're effectively the same, -15 added an
|
||||
// 30 was also h2-14. They're effectively the same, -15 added an
|
||||
// error code. So, we advertise all, but our "default position" is -16.
|
||||
HTTP2_VERSION_DRAFT16 = 30
|
||||
HTTP_VERSION_2_DRAFT_15 = 30,
|
||||
HTTP_VERSION_2_DRAFT_16 = 31
|
||||
};
|
||||
|
||||
typedef uint8_t nsHttpVersion;
|
||||
|
||||
#define NS_HTTP2_DRAFT_VERSION HTTP2_VERSION_DRAFT16
|
||||
#define NS_HTTP2_DRAFT_TOKEN "h2-16"
|
||||
#define HTTP_VERSION_2_DRAFT_LATEST HTTP_VERSION_2_DRAFT_16
|
||||
#define HTTP2_DRAFT_LATEST_TOKEN "h2-16"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// http connection capabilities
|
||||
|
Loading…
Reference in New Issue
Block a user