Index: net/websockets/websocket_basic_handshake_stream.cc |
diff --git a/net/websockets/websocket_basic_handshake_stream.cc b/net/websockets/websocket_basic_handshake_stream.cc |
index a8d12fcb6807cbf8ae15502accbee09ada0777a3..870ef6dd222e357c11869e648178750e9bd41d3e 100644 |
--- a/net/websockets/websocket_basic_handshake_stream.cc |
+++ b/net/websockets/websocket_basic_handshake_stream.cc |
@@ -222,6 +222,15 @@ bool ValidateSubProtocol( |
return true; |
} |
+bool DeflateError(std::string* message, const char* piece) { |
Adam Rice
2014/02/10 12:31:24
Please use base::StringPiece for the second argume
yhirano
2014/02/13 04:56:18
Done.
|
+ *message = std::string("Error in permessage-deflate: ") + piece; |
+ return false; |
+} |
+ |
+bool DeflateError(std::string* message, const std::string& piece) { |
+ return DeflateError(message, piece.c_str()); |
+} |
+ |
bool ValidatePerMessageDeflateExtension(const WebSocketExtension& extension, |
std::string* failure_message, |
WebSocketExtensionParams* params) { |
@@ -241,44 +250,42 @@ bool ValidatePerMessageDeflateExtension(const WebSocketExtension& extension, |
it != parameters.end(); ++it) { |
const std::string& name = it->name(); |
if (seen_names.count(name) != 0) { |
- *failure_message = |
- "Received duplicate permessage-deflate extension parameter " + name; |
- return false; |
+ return DeflateError( |
+ failure_message, |
+ "Received duplicate permessage-deflate extension parameter " + name); |
} |
seen_names.insert(name); |
const std::string client_or_server(name, 0, kPrefixLen); |
const bool is_client = (client_or_server == kClientPrefix); |
if (!is_client && client_or_server != kServerPrefix) { |
- *failure_message = |
- "Received an unexpected permessage-deflate extension parameter"; |
- return false; |
+ return DeflateError( |
+ failure_message, |
+ "Received an unexpected permessage-deflate extension parameter"); |
} |
const std::string rest(name, kPrefixLen); |
if (rest == kNoContextTakeover) { |
if (it->HasValue()) { |
- *failure_message = "Received invalid " + name + " parameter"; |
- return false; |
+ return DeflateError(failure_message, |
+ "Received invalid " + name + " parameter"); |
} |
if (is_client) |
params->deflate_mode = WebSocketDeflater::DO_NOT_TAKE_OVER_CONTEXT; |
} else if (rest == kMaxWindowBits) { |
- if (!it->HasValue()) { |
- *failure_message = name + " must have value"; |
- return false; |
- } |
+ if (!it->HasValue()) |
+ return DeflateError(failure_message, name + " must have value"); |
int bits = 0; |
if (!base::StringToInt(it->value(), &bits) || bits < 8 || bits > 15 || |
it->value()[0] == '0' || |
it->value().find_first_not_of("0123456789") != std::string::npos) { |
- *failure_message = "Received invalid " + name + " parameter"; |
- return false; |
+ return DeflateError(failure_message, |
+ "Received invalid " + name + " parameter"); |
} |
if (is_client) |
params->client_window_bits = bits; |
} else { |
- *failure_message = |
- "Received an unexpected permessage-deflate extension parameter"; |
- return false; |
+ return DeflateError( |
+ failure_message, |
+ "Received an unexpected permessage-deflate extension parameter"); |
} |
} |
params->deflate_enabled = true; |