Index: net/test/embedded_test_server/embedded_test_server.cc |
diff --git a/net/test/embedded_test_server/embedded_test_server.cc b/net/test/embedded_test_server/embedded_test_server.cc |
index deeed7d021efcaad503d0f347866170c91623adc..80a1e7c8f1be6ea5e9b009768d03b360426856b8 100644 |
--- a/net/test/embedded_test_server/embedded_test_server.cc |
+++ b/net/test/embedded_test_server/embedded_test_server.cc |
@@ -27,36 +27,31 @@ const int kPort = 8040; |
const char kIp[] = "127.0.0.1"; |
const int kRetries = 10; |
-// Callback to handle requests with default predefined response for requests |
-// matching the address |url|. |
-scoped_ptr<HttpResponse> HandleDefaultRequest(const GURL& url, |
- const HttpResponse& response, |
- const HttpRequest& request) { |
- const GURL request_url = url.Resolve(request.relative_url); |
- if (url.path() != request_url.path()) |
- return scoped_ptr<HttpResponse>(NULL); |
- return scoped_ptr<HttpResponse>(new HttpResponse(response)); |
-} |
- |
// Handles |request| by serving a file from under |server_root|. |
-scoped_ptr<HttpResponse> HandleFileRequest(const base::FilePath& server_root, |
- const HttpRequest& request) { |
+scoped_ptr<HttpResponseInterface> HandleFileRequest( |
+ const base::FilePath& server_root, |
+ const HttpRequest& request) { |
// This is a test-only server. Ignore I/O thread restrictions. |
base::ThreadRestrictions::ScopedAllowIO allow_io; |
// Trim the first byte ('/'). |
std::string request_path(request.relative_url.substr(1)); |
+ // Remove the query string if present. |
+ size_t query_pos = request_path.find('?'); |
+ if (query_pos != std::string::npos) |
+ request_path = request_path.substr(0, query_pos); |
+ |
std::string file_contents; |
if (!file_util::ReadFileToString( |
server_root.AppendASCII(request_path), &file_contents)) { |
- return scoped_ptr<HttpResponse>(NULL); |
+ return scoped_ptr<HttpResponseInterface>(NULL); |
} |
scoped_ptr<HttpResponse> http_response(new HttpResponse); |
http_response->set_code(net::test_server::SUCCESS); |
http_response->set_content(file_contents); |
- return http_response.Pass(); |
+ return http_response.PassAs<HttpResponseInterface>(); |
} |
} // namespace |
@@ -161,20 +156,26 @@ void EmbeddedTestServer::HandleRequest(HttpConnection* connection, |
scoped_ptr<HttpRequest> request) { |
DCHECK(io_thread_->BelongsToCurrentThread()); |
+ bool request_handled = false; |
+ |
for (size_t i = 0; i < request_handlers_.size(); ++i) { |
- scoped_ptr<HttpResponse> response = |
+ scoped_ptr<HttpResponseInterface> response = |
request_handlers_[i].Run(*request.get()); |
if (response.get()) { |
connection->SendResponse(response.Pass()); |
- return; |
+ request_handled = true; |
+ break; |
} |
} |
- LOG(WARNING) << "Request not handled. Returning 404: " |
- << request->relative_url; |
- scoped_ptr<HttpResponse> not_found_response(new HttpResponse()); |
- not_found_response->set_code(NOT_FOUND); |
- connection->SendResponse(not_found_response.Pass()); |
+ if (!request_handled) { |
satorux1
2013/05/22 01:54:56
thank you for fixing the bug.
|
+ LOG(WARNING) << "Request not handled. Returning 404: " |
+ << request->relative_url; |
+ scoped_ptr<HttpResponse> not_found_response(new HttpResponse); |
+ not_found_response->set_code(NOT_FOUND); |
+ connection->SendResponse( |
+ not_found_response.PassAs<HttpResponseInterface>()); |
+ } |
// Drop the connection, since we do not support multiple requests per |
// connection. |