Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(882)

Unified Diff: net/websockets/websocket_basic_handshake_stream.cc

Issue 152483003: [WebSocket] Add Cache-Control to the request header. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 808383bacf40f99fac7fea6c3640cdb732398ca3..e3008b8142805d030bebecf220d1a308f9762398 100644
--- a/net/websockets/websocket_basic_handshake_stream.cc
+++ b/net/websockets/websocket_basic_handshake_stream.cc
@@ -234,7 +234,7 @@ bool ValidatePerMessageDeflateExtension(const WebSocketExtension& extension,
the_strings_server_and_client_must_be_the_same_length);
typedef std::vector<WebSocketExtension::Parameter> ParameterVector;
- DCHECK(extension.name() == "permessage-deflate");
+ DCHECK_EQ("permessage-deflate", extension.name());
const ParameterVector& parameters = extension.parameters();
std::set<std::string> seen_names;
for (ParameterVector::const_iterator it = parameters.begin();
@@ -297,7 +297,7 @@ bool ValidateExtensions(const HttpResponseHeaders* headers,
// code.
bool seen_permessage_deflate = false;
while (headers->EnumerateHeader(
- &state, websockets::kSecWebSocketExtensions, &value)) {
+ &state, websockets::kSecWebSocketExtensions, &value)) {
WebSocketExtensionParser parser;
parser.Parse(value);
if (parser.has_error()) {
@@ -315,7 +315,7 @@ bool ValidateExtensions(const HttpResponseHeaders* headers,
}
seen_permessage_deflate = true;
if (!ValidatePerMessageDeflateExtension(
- parser.extension(), failure_message, params))
+ parser.extension(), failure_message, params))
return false;
} else {
*failure_message =
@@ -416,10 +416,7 @@ int WebSocketBasicHandshakeStream::ReadResponseHeaders(
callback));
if (rv == ERR_IO_PENDING)
return rv;
- if (rv == OK)
- return ValidateResponse();
- OnFinishOpeningHandshake();
- return rv;
+ return ValidateResponse(rv);
}
const HttpResponseInfo* WebSocketBasicHandshakeStream::GetResponseInfo() const {
@@ -526,11 +523,7 @@ std::string WebSocketBasicHandshakeStream::GetFailureMessage() const {
void WebSocketBasicHandshakeStream::ReadResponseHeadersCallback(
const CompletionCallback& callback,
int result) {
- if (result == OK)
- result = ValidateResponse();
- else
- OnFinishOpeningHandshake();
- callback.Run(result);
+ callback.Run(ValidateResponse(result));
}
void WebSocketBasicHandshakeStream::OnFinishOpeningHandshake() {
@@ -546,44 +539,50 @@ void WebSocketBasicHandshakeStream::OnFinishOpeningHandshake() {
connect_delegate_->OnFinishOpeningHandshake(response.Pass());
}
-int WebSocketBasicHandshakeStream::ValidateResponse() {
+int WebSocketBasicHandshakeStream::ValidateResponse(int rv) {
DCHECK(http_response_info_);
- const scoped_refptr<HttpResponseHeaders>& headers =
- http_response_info_->headers;
-
- switch (headers->response_code()) {
- case HTTP_SWITCHING_PROTOCOLS:
- OnFinishOpeningHandshake();
- return ValidateUpgradeResponse(headers);
-
- // We need to pass these through for authentication to work.
- case HTTP_UNAUTHORIZED:
- case HTTP_PROXY_AUTHENTICATION_REQUIRED:
- return OK;
-
- // Other status codes are potentially risky (see the warnings in the
- // WHATWG WebSocket API spec) and so are dropped by default.
- default:
- failure_message_ = base::StringPrintf("Unexpected status code: %d",
- headers->response_code());
- OnFinishOpeningHandshake();
- return ERR_INVALID_RESPONSE;
+ const HttpResponseHeaders* headers = http_response_info_->headers.get();
+ if (rv >= 0) {
+ switch (headers->response_code()) {
+ case HTTP_SWITCHING_PROTOCOLS:
+ OnFinishOpeningHandshake();
+ return ValidateUpgradeResponse(headers);
+
+ // We need to pass these through for authentication to work.
+ case HTTP_UNAUTHORIZED:
+ case HTTP_PROXY_AUTHENTICATION_REQUIRED:
+ return OK;
+
+ // Other status codes are potentially risky (see the warnings in the
+ // WHATWG WebSocket API spec) and so are dropped by default.
+ default:
+ failure_message_ = base::StringPrintf(
+ "Error during WebSocket handshake: Unexpected response code: %d",
+ headers->response_code());
+ OnFinishOpeningHandshake();
+ return ERR_INVALID_RESPONSE;
+ }
+ } else {
+ failure_message_ =
+ std::string("Error during WebSocket handshake: ") + ErrorToString(rv);
+ OnFinishOpeningHandshake();
+ return rv;
}
}
int WebSocketBasicHandshakeStream::ValidateUpgradeResponse(
- const scoped_refptr<HttpResponseHeaders>& headers) {
+ const HttpResponseHeaders* headers) {
extension_params_.reset(new WebSocketExtensionParams);
- if (ValidateUpgrade(headers.get(), &failure_message_) &&
- ValidateSecWebSocketAccept(headers.get(),
+ if (ValidateUpgrade(headers, &failure_message_) &&
+ ValidateSecWebSocketAccept(headers,
handshake_challenge_response_,
&failure_message_) &&
- ValidateConnection(headers.get(), &failure_message_) &&
- ValidateSubProtocol(headers.get(),
+ ValidateConnection(headers, &failure_message_) &&
+ ValidateSubProtocol(headers,
requested_sub_protocols_,
&sub_protocol_,
&failure_message_) &&
- ValidateExtensions(headers.get(),
+ ValidateExtensions(headers,
requested_extensions_,
&extensions_,
&failure_message_,
« no previous file with comments | « net/websockets/websocket_basic_handshake_stream.h ('k') | net/websockets/websocket_handshake_stream_create_helper_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698