summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorbnc <bnc@chromium.org>2015-10-16 04:57:21 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-16 11:57:59 +0000
commit44858c8a031fc46bb4ba11c94fee9869db3b66f1 (patch)
tree119c805c12d80bbf251204501fa34d8287ac557b /net
parent3c540d908ba553ac066a2e472619ae415a687bcc (diff)
downloadchromium_src-44858c8a031fc46bb4ba11c94fee9869db3b66f1.zip
chromium_src-44858c8a031fc46bb4ba11c94fee9869db3b66f1.tar.gz
chromium_src-44858c8a031fc46bb4ba11c94fee9869db3b66f1.tar.bz2
Add quotation marks around probability value in Alternative Services.
Change SpdyAltSvcWireFormat to quote probability value to conform to server syntax. This CL lands server change 105446949 by bnc. BUG=543366 Review URL: https://codereview.chromium.org/1407643005 Cr-Commit-Position: refs/heads/master@{#354496}
Diffstat (limited to 'net')
-rw-r--r--net/http/http_network_transaction_unittest.cc2
-rw-r--r--net/quic/quic_network_transaction_unittest.cc2
-rw-r--r--net/spdy/spdy_alt_svc_wire_format.cc8
-rw-r--r--net/spdy/spdy_alt_svc_wire_format_test.cc14
-rw-r--r--net/spdy/spdy_framer_test.cc16
5 files changed, 23 insertions, 19 deletions
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index dbf3755..c9014a4 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -9586,7 +9586,7 @@ TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeader) {
MockRead("HTTP/1.1 200 OK\r\n"),
MockRead("Alt-Svc: "),
MockRead(GetAlternateProtocolFromParam()),
- MockRead("=\"www.example.com:443\";p=1.0,"),
+ MockRead("=\"www.example.com:443\";p=\"1.0\","),
MockRead("quic=\":1234\"\r\n\r\n"),
MockRead("hello world"),
MockRead(SYNCHRONOUS, OK),
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index 9411ccb..d58f2246 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -66,7 +66,7 @@ static const char kQuicAlternateProtocolHttpsHeader[] =
static const char kQuicAlternativeServiceHttpHeader[] =
"Alt-Svc: quic=\":80\"\r\n\r\n";
static const char kQuicAlternativeService50pctHttpHeader[] =
- "Alt-Svc: quic=\":80\";p=.5\r\n\r\n";
+ "Alt-Svc: quic=\":80\";p=\".5\"\r\n\r\n";
static const char kQuicAlternativeServiceDifferentPortHttpHeader[] =
"Alt-Svc: quic=\":137\"\r\n\r\n";
static const char kQuicAlternativeServiceHttpsHeader[] =
diff --git a/net/spdy/spdy_alt_svc_wire_format.cc b/net/spdy/spdy_alt_svc_wire_format.cc
index fba2dc5..cc68e87 100644
--- a/net/spdy/spdy_alt_svc_wire_format.cc
+++ b/net/spdy/spdy_alt_svc_wire_format.cc
@@ -147,7 +147,11 @@ bool SpdyAltSvcWireFormat::ParseHeaderFieldValue(
return false;
}
} else if (parameter_name.compare("p") == 0) {
- if (!ParseProbability(parameter_value_begin, c, &probability)) {
+ // Probability value is enclosed in quotation marks.
+ if (*parameter_value_begin != '"' || *(c - 1) != '"') {
+ return false;
+ }
+ if (!ParseProbability(parameter_value_begin + 1, c - 1, &probability)) {
return false;
}
}
@@ -220,7 +224,7 @@ std::string SpdyAltSvcWireFormat::SerializeHeaderFieldValue(
base::StringAppendF(&value, "; ma=%d", altsvc.max_age);
}
if (altsvc.probability != 1.0) {
- base::StringAppendF(&value, "; p=%.2f", altsvc.probability);
+ base::StringAppendF(&value, "; p=\"%.2f\"", altsvc.probability);
}
}
return value;
diff --git a/net/spdy/spdy_alt_svc_wire_format_test.cc b/net/spdy/spdy_alt_svc_wire_format_test.cc
index 76567e4..6933e7c 100644
--- a/net/spdy/spdy_alt_svc_wire_format_test.cc
+++ b/net/spdy/spdy_alt_svc_wire_format_test.cc
@@ -88,12 +88,12 @@ void FuzzHeaderFieldValue(
}
if (i & 1 << 5) {
expected_altsvc->probability = 0.33;
- header_field_value->append("; P=.33");
+ header_field_value->append("; P=\".33\"");
}
if (i & 1 << 6) {
expected_altsvc->probability = 0.0;
expected_altsvc->version = 24;
- header_field_value->append("; p=0;v=24");
+ header_field_value->append("; p=\"0\";v=24");
}
if (i & 1 << 7) {
expected_altsvc->max_age = 999999999;
@@ -101,7 +101,7 @@ void FuzzHeaderFieldValue(
}
if (i & 1 << 8) {
expected_altsvc->probability = 0.0;
- header_field_value->append("; P=0.");
+ header_field_value->append("; P=\"0.\"");
}
if (i & 1 << 9) {
header_field_value->append(";");
@@ -141,7 +141,7 @@ void FuzzAlternativeService(int i,
}
if (i & 1 << 3) {
altsvc->probability = 0.33;
- expected_header_field_value->append("; p=0.33");
+ expected_header_field_value->append("; p=\"0.33\"");
}
}
@@ -268,9 +268,9 @@ TEST(SpdyAltSvcWireFormatTest, ParseHeaderFieldValueInvalid) {
"a=", "a=\"", "a=\"b\"", "a=\":\"", "a=\"c:\"", "a=\"c:foo\"",
"a=\"c:42foo\"", "a=\"b:42\"bar", "a=\"b:42\" ; m",
"a=\"b:42\" ; min-age", "a=\"b:42\" ; ma", "a=\"b:42\" ; ma=",
- "a=\"b:42\" ; ma=ma", "a=\"b:42\" ; ma=123bar", "a=\"b:42\" ; p=-2",
- "a=\"b:42\" ; p=..", "a=\"b:42\" ; p=1.05",
- "a=\"b:42\" ; v=-3", "a=\"b:42\" ; v=1.2"};
+ "a=\"b:42\" ; ma=ma", "a=\"b:42\" ; ma=123bar", "a=\"b:42\" ; p=\"-2\"",
+ "a=\"b:42\" ; p=\"..\"", "a=\"b:42\" ; p=\"1.05\"", "a=\"b:42\" ; p=0.4",
+ "a=\"b:42\" ; p=\" 1.0\"", "a=\"b:42\" ; v=-3", "a=\"b:42\" ; v=1.2"};
for (const char* invalid_field_value : invalid_field_value_array) {
EXPECT_FALSE(SpdyAltSvcWireFormat::ParseHeaderFieldValue(
invalid_field_value, &altsvc_vector))
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
index e593862..e7e719b 100644
--- a/net/spdy/spdy_framer_test.cc
+++ b/net/spdy/spdy_framer_test.cc
@@ -3532,14 +3532,14 @@ TEST_P(SpdyFramerTest, CreateAltSvc) {
const char kType = static_cast<unsigned char>(
SpdyConstants::SerializeFrameType(spdy_version_, ALTSVC));
const unsigned char kFrameData[] = {
- 0x00, 0x00, 0x4f, kType, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06,
- 'o', 'r', 'i', 'g', 'i', 'n', 'p', 'i', 'd', '1', '=',
- '"', 'h', 'o', 's', 't', ':', '4', '4', '3', '"', ';',
- ' ', 'm', 'a', '=', '5', ',', 'p', '%', '2', '2', '%',
- '3', 'D', 'i', '%', '3', 'A', 'd', '=', '"', 'h', '_',
- '\\', '\\', 'o', '\\', '"', 's', 't', ':', '1', '2', '3',
- '"', ';', ' ', 'v', '=', '2', '4', ';', ' ', 'm', 'a',
- '=', '4', '2', ';', ' ', 'p', '=', '0', '.', '2', '0'};
+ 0x00, 0x00, 0x51, kType, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 'o',
+ 'r', 'i', 'g', 'i', 'n', 'p', 'i', 'd', '1', '=', '"', 'h',
+ 'o', 's', 't', ':', '4', '4', '3', '"', ';', ' ', 'm', 'a',
+ '=', '5', ',', 'p', '%', '2', '2', '%', '3', 'D', 'i', '%',
+ '3', 'A', 'd', '=', '"', 'h', '_', '\\', '\\', 'o', '\\', '"',
+ 's', 't', ':', '1', '2', '3', '"', ';', ' ', 'v', '=', '2',
+ '4', ';', ' ', 'm', 'a', '=', '4', '2', ';', ' ', 'p', '=',
+ '"', '0', '.', '2', '0', '"'};
SpdyAltSvcIR altsvc_ir(3);
altsvc_ir.set_origin("origin");
altsvc_ir.add_altsvc(