summaryrefslogtreecommitdiff
path: root/chromium/net/server
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-07-16 11:45:35 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-07-17 08:59:23 +0000
commit552906b0f222c5d5dd11b9fd73829d510980461a (patch)
tree3a11e6ed0538a81dd83b20cf3a4783e297f26d91 /chromium/net/server
parent1b05827804eaf047779b597718c03e7d38344261 (diff)
downloadqtwebengine-chromium-552906b0f222c5d5dd11b9fd73829d510980461a.tar.gz
BASELINE: Update Chromium to 83.0.4103.122
Change-Id: Ie3a82f5bb0076eec2a7c6a6162326b4301ee291e Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/net/server')
-rw-r--r--chromium/net/server/BUILD.gn4
-rw-r--r--chromium/net/server/http_server_request_info.cc4
-rw-r--r--chromium/net/server/http_server_unittest.cc61
3 files changed, 46 insertions, 23 deletions
diff --git a/chromium/net/server/BUILD.gn b/chromium/net/server/BUILD.gn
index 1f3e3cb55cb..8ee35c5270f 100644
--- a/chromium/net/server/BUILD.gn
+++ b/chromium/net/server/BUILD.gn
@@ -70,9 +70,7 @@ source_set("tests") {
if (enable_websockets) {
fuzzer_test("net_http_server_fuzzer") {
- sources = [
- "http_server_fuzzer.cc",
- ]
+ sources = [ "http_server_fuzzer.cc" ]
deps = [
":http_server",
"//base",
diff --git a/chromium/net/server/http_server_request_info.cc b/chromium/net/server/http_server_request_info.cc
index 58021cf29e5..3274b3928b4 100644
--- a/chromium/net/server/http_server_request_info.cc
+++ b/chromium/net/server/http_server_request_info.cc
@@ -33,8 +33,8 @@ bool HttpServerRequestInfo::HasHeaderValue(
std::string complete_value = base::ToLowerASCII(GetHeaderValue(header_name));
for (const base::StringPiece& cur :
- base::SplitString(complete_value, ",", base::KEEP_WHITESPACE,
- base::SPLIT_WANT_NONEMPTY)) {
+ base::SplitStringPiece(complete_value, ",", base::KEEP_WHITESPACE,
+ base::SPLIT_WANT_NONEMPTY)) {
if (base::TrimString(cur, " \t", base::TRIM_ALL) == header_value)
return true;
}
diff --git a/chromium/net/server/http_server_unittest.cc b/chromium/net/server/http_server_unittest.cc
index 7f404ad0010..509ece87cc8 100644
--- a/chromium/net/server/http_server_unittest.cc
+++ b/chromium/net/server/http_server_unittest.cc
@@ -11,6 +11,7 @@
#include <utility>
#include <vector>
+#include "base/auto_reset.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/callback_helpers.h"
@@ -188,6 +189,9 @@ class HttpServerTest : public TestWithTaskEnvironment,
void OnConnect(int connection_id) override {
DCHECK(connection_map_.find(connection_id) == connection_map_.end());
connection_map_[connection_id] = true;
+ // This is set in CreateConnection(), which must be invoked once for every
+ // expected connection.
+ quit_on_create_loop_->Quit();
}
void OnHttpRequest(int connection_id,
@@ -219,9 +223,21 @@ class HttpServerTest : public TestWithTaskEnvironment,
return;
base::RunLoop run_loop;
- run_loop_quit_func_ = run_loop.QuitClosure();
+ base::AutoReset<base::RepeatingClosure> run_loop_quit_func(
+ &run_loop_quit_func_, run_loop.QuitClosure());
run_loop.Run();
- run_loop_quit_func_.Reset();
+
+ ASSERT_EQ(requests_.size(), count);
+ }
+
+ // Connections should only be created using this method, which waits until
+ // both the server and the client have received the connected socket.
+ void CreateConnection(TestHttpClient* client) {
+ ASSERT_FALSE(quit_on_create_loop_);
+ quit_on_create_loop_ = std::make_unique<base::RunLoop>();
+ EXPECT_THAT(client->ConnectAndWait(server_address_), IsOk());
+ quit_on_create_loop_->Run();
+ quit_on_create_loop_.reset();
}
void RunUntilConnectionIdClosed(int connection_id) {
@@ -233,9 +249,13 @@ class HttpServerTest : public TestWithTaskEnvironment,
}
base::RunLoop run_loop;
- run_loop_quit_func_ = run_loop.QuitClosure();
+ base::AutoReset<base::RepeatingClosure> run_loop_quit_func(
+ &run_loop_quit_func_, run_loop.QuitClosure());
run_loop.Run();
- run_loop_quit_func_.Reset();
+
+ iter = connection_map_.find(connection_id);
+ ASSERT_TRUE(iter != connection_map_.end());
+ ASSERT_FALSE(iter->second);
}
HttpServerRequestInfo GetRequest(size_t request_index) {
@@ -249,8 +269,12 @@ class HttpServerTest : public TestWithTaskEnvironment,
}
void HandleAcceptResult(std::unique_ptr<StreamSocket> socket) {
+ ASSERT_FALSE(quit_on_create_loop_);
+ quit_on_create_loop_ = std::make_unique<base::RunLoop>();
server_->accepted_socket_ = std::move(socket);
server_->HandleAcceptResult(OK);
+ quit_on_create_loop_->Run();
+ quit_on_create_loop_.reset();
}
std::unordered_map<int, bool>& connection_map() { return connection_map_; }
@@ -265,6 +289,7 @@ class HttpServerTest : public TestWithTaskEnvironment,
private:
size_t quit_after_request_count_;
+ std::unique_ptr<base::RunLoop> quit_on_create_loop_;
int quit_on_close_connection_;
};
@@ -286,7 +311,7 @@ class WebSocketTest : public HttpServerTest {
TEST_F(HttpServerTest, Request) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send("GET /test HTTP/1.1\r\n\r\n");
RunUntilRequestsReceived(1);
ASSERT_EQ("GET", GetRequest(0).method);
@@ -299,7 +324,7 @@ TEST_F(HttpServerTest, Request) {
TEST_F(HttpServerTest, RequestBrokenTermination) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send("GET /test HTTP/1.1\r\n\r)");
RunUntilConnectionIdClosed(1);
EXPECT_EQ(0u, num_requests());
@@ -308,7 +333,7 @@ TEST_F(HttpServerTest, RequestBrokenTermination) {
TEST_F(HttpServerTest, RequestWithHeaders) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
const char* const kHeaders[][3] = {
{"Header", ": ", "1"},
{"HeaderWithNoWhitespace", ":", "1"},
@@ -338,7 +363,7 @@ TEST_F(HttpServerTest, RequestWithHeaders) {
TEST_F(HttpServerTest, RequestWithDuplicateHeaders) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
const char* const kHeaders[][3] = {
{"FirstHeader", ": ", "1"},
{"DuplicateHeader", ": ", "2"},
@@ -366,7 +391,7 @@ TEST_F(HttpServerTest, RequestWithDuplicateHeaders) {
TEST_F(HttpServerTest, HasHeaderValueTest) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
const char* const kHeaders[] = {
"Header: Abcd",
"HeaderWithNoWhitespace:E",
@@ -403,7 +428,7 @@ TEST_F(HttpServerTest, HasHeaderValueTest) {
TEST_F(HttpServerTest, RequestWithBody) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
std::string body = "a" + std::string(1 << 10, 'b') + "c";
client.Send(base::StringPrintf(
"GET /test HTTP/1.1\r\n"
@@ -420,7 +445,7 @@ TEST_F(HttpServerTest, RequestWithBody) {
TEST_F(WebSocketTest, RequestWebSocket) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send(
"GET /test HTTP/1.1\r\n"
"Upgrade: WebSocket\r\n"
@@ -433,7 +458,7 @@ TEST_F(WebSocketTest, RequestWebSocket) {
TEST_F(WebSocketTest, RequestWebSocketTrailingJunk) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send(
"GET /test HTTP/1.1\r\n"
"Upgrade: WebSocket\r\n"
@@ -447,7 +472,7 @@ TEST_F(WebSocketTest, RequestWebSocketTrailingJunk) {
TEST_F(HttpServerTest, RequestWithTooLargeBody) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send(
"GET /test HTTP/1.1\r\n"
"Content-Length: 1073741824\r\n\r\n");
@@ -463,7 +488,7 @@ TEST_F(HttpServerTest, RequestWithTooLargeBody) {
TEST_F(HttpServerTest, Send200) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send("GET /test HTTP/1.1\r\n\r\n");
RunUntilRequestsReceived(1);
server_->Send200(GetConnectionId(0), "Response!", "text/plain",
@@ -479,7 +504,7 @@ TEST_F(HttpServerTest, Send200) {
TEST_F(HttpServerTest, SendRaw) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send("GET /test HTTP/1.1\r\n\r\n");
RunUntilRequestsReceived(1);
server_->SendRaw(GetConnectionId(0), "Raw Data ",
@@ -504,7 +529,7 @@ TEST_F(HttpServerTest, WrongProtocolRequest) {
for (size_t i = 0; i < base::size(kBadProtocolRequests); ++i) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send(kBadProtocolRequests[i]);
client.ExpectUsedThenDisconnectedWithNoData();
@@ -638,7 +663,7 @@ TEST_F(HttpServerTest, MultipleRequestsOnSameConnection) {
// The idea behind this test is that requests with or without bodies should
// not break parsing of the next request.
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
std::string body = "body";
client.Send(base::StringPrintf(
"GET /test HTTP/1.1\r\n"
@@ -698,7 +723,7 @@ class CloseOnConnectHttpServerTest : public HttpServerTest {
TEST_F(CloseOnConnectHttpServerTest, ServerImmediatelyClosesConnection) {
TestHttpClient client;
- ASSERT_THAT(client.ConnectAndWait(server_address_), IsOk());
+ CreateConnection(&client);
client.Send("GET / HTTP/1.1\r\n\r\n");
// The server should close the socket without responding.