| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/spdy/spdy_alt_svc_wire_format.h" | 5 #include "net/spdy/spdy_alt_svc_wire_format.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 } | 140 } |
| 141 if (parameter_name.compare("v") == 0) { | 141 if (parameter_name.compare("v") == 0) { |
| 142 if (!ParsePositiveInteger16(parameter_value_begin, c, &version)) { | 142 if (!ParsePositiveInteger16(parameter_value_begin, c, &version)) { |
| 143 return false; | 143 return false; |
| 144 } | 144 } |
| 145 } else if (parameter_name.compare("ma") == 0) { | 145 } else if (parameter_name.compare("ma") == 0) { |
| 146 if (!ParsePositiveInteger32(parameter_value_begin, c, &max_age)) { | 146 if (!ParsePositiveInteger32(parameter_value_begin, c, &max_age)) { |
| 147 return false; | 147 return false; |
| 148 } | 148 } |
| 149 } else if (parameter_name.compare("p") == 0) { | 149 } else if (parameter_name.compare("p") == 0) { |
| 150 if (!ParseProbability(parameter_value_begin, c, &probability)) { | 150 // Probability value is enclosed in quotation marks. |
| 151 if (*parameter_value_begin != '"' || *(c - 1) != '"') { |
| 152 return false; |
| 153 } |
| 154 if (!ParseProbability(parameter_value_begin + 1, c - 1, &probability)) { |
| 151 return false; | 155 return false; |
| 152 } | 156 } |
| 153 } | 157 } |
| 154 } | 158 } |
| 155 altsvc_vector->push_back(AlternativeService(protocol_id, host, port, | 159 altsvc_vector->push_back(AlternativeService(protocol_id, host, port, |
| 156 version, max_age, probability)); | 160 version, max_age, probability)); |
| 157 for (; c != value.end() && (*c == ' ' || *c == '\t' || *c == ','); ++c) { | 161 for (; c != value.end() && (*c == ' ' || *c == '\t' || *c == ','); ++c) { |
| 158 } | 162 } |
| 159 } | 163 } |
| 160 return true; | 164 return true; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 value.push_back(c); | 217 value.push_back(c); |
| 214 } | 218 } |
| 215 base::StringAppendF(&value, ":%d\"", altsvc.port); | 219 base::StringAppendF(&value, ":%d\"", altsvc.port); |
| 216 if (altsvc.version != 0) { | 220 if (altsvc.version != 0) { |
| 217 base::StringAppendF(&value, "; v=%d", altsvc.version); | 221 base::StringAppendF(&value, "; v=%d", altsvc.version); |
| 218 } | 222 } |
| 219 if (altsvc.max_age != 86400) { | 223 if (altsvc.max_age != 86400) { |
| 220 base::StringAppendF(&value, "; ma=%d", altsvc.max_age); | 224 base::StringAppendF(&value, "; ma=%d", altsvc.max_age); |
| 221 } | 225 } |
| 222 if (altsvc.probability != 1.0) { | 226 if (altsvc.probability != 1.0) { |
| 223 base::StringAppendF(&value, "; p=%.2f", altsvc.probability); | 227 base::StringAppendF(&value, "; p=\"%.2f\"", altsvc.probability); |
| 224 } | 228 } |
| 225 } | 229 } |
| 226 return value; | 230 return value; |
| 227 } | 231 } |
| 228 | 232 |
| 229 // static | 233 // static |
| 230 void SpdyAltSvcWireFormat::SkipWhiteSpace(StringPiece::const_iterator* c, | 234 void SpdyAltSvcWireFormat::SkipWhiteSpace(StringPiece::const_iterator* c, |
| 231 StringPiece::const_iterator end) { | 235 StringPiece::const_iterator end) { |
| 232 for (; *c != end && (**c == ' ' || **c == '\t'); ++*c) { | 236 for (; *c != end && (**c == ' ' || **c == '\t'); ++*c) { |
| 233 } | 237 } |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 ++c; | 347 ++c; |
| 344 double place_value = 0.1; | 348 double place_value = 0.1; |
| 345 for (; c != end && isdigit(*c); ++c) { | 349 for (; c != end && isdigit(*c); ++c) { |
| 346 *probability += place_value * (*c - '0'); | 350 *probability += place_value * (*c - '0'); |
| 347 place_value *= 0.1; | 351 place_value *= 0.1; |
| 348 } | 352 } |
| 349 return (c == end && *probability <= 1.0); | 353 return (c == end && *probability <= 1.0); |
| 350 } | 354 } |
| 351 | 355 |
| 352 } // namespace net | 356 } // namespace net |
| OLD | NEW |