Index: net/server/http_server.cc |
diff --git a/net/server/http_server.cc b/net/server/http_server.cc |
index a51feb84401e4ebf7c3ce370e423ee04ab34be89..bf6c571a5c9c1bd1520a66b9f4068dbbb40fe144 100644 |
--- a/net/server/http_server.cc |
+++ b/net/server/http_server.cc |
@@ -12,6 +12,7 @@ |
#include "base/strings/stringprintf.h" |
#include "base/sys_byteorder.h" |
#include "build/build_config.h" |
+#include "net/base/ip_endpoint.h" |
#include "net/base/net_errors.h" |
#include "net/server/http_connection.h" |
#include "net/server/http_server_request_info.h" |
@@ -132,6 +133,12 @@ void HttpServer::DidRead(StreamListenSocket* socket, |
if (!ParseHeaders(connection, &request, &pos)) |
break; |
+ // Sets peer address if exists. |
+ IPEndPoint peer; |
+ if (socket->GetPeerAddress(&peer) == OK) { |
+ request.peer = peer; |
Ryan Sleevi
2014/03/11 01:32:43
Why not socket->GetPeerAddress(&request.peer)?
Se
gunsch
2014/03/17 16:57:15
Done.
|
+ } |
+ |
std::string connection_header = request.GetHeaderValue("connection"); |
if (connection_header == "Upgrade") { |
connection->web_socket_.reset(WebSocket::CreateWebSocket(connection, |
@@ -145,6 +152,13 @@ void HttpServer::DidRead(StreamListenSocket* socket, |
continue; |
} |
+ // Rejects non "HTTP/1.1" requests and terminate connection. |
+ if (request.proto != "HTTP/1.1") { |
+ connection->Send(HttpServerResponseInfo(HTTP_NOT_IMPLEMENTED)); |
+ Close(connection->id()); |
+ break; |
+ } |
Ryan Sleevi
2014/03/11 01:32:43
Unrelated?
gunsch
2014/03/17 16:57:15
This was in our local changes to this class, but I
|
+ |
const char kContentLength[] = "content-length"; |
if (request.headers.count(kContentLength)) { |
size_t content_length = 0; |
@@ -272,8 +286,7 @@ bool HttpServer::ParseHeaders(HttpConnection* connection, |
buffer.clear(); |
break; |
case ST_PROTO: |
- // TODO(mbelshe): Deal better with parsing protocol. |
- DCHECK(buffer == "HTTP/1.1"); |
+ info->proto = buffer; |
Ryan Sleevi
2014/03/11 01:32:43
ditto
gunsch
2014/03/17 16:57:15
Done.
|
buffer.clear(); |
break; |
case ST_NAME: |