aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoripknHama <ipknhama@gmail.com>2014-05-02 18:22:02 +0900
committeripknHama <ipknhama@gmail.com>2014-07-09 14:08:02 +0900
commit23f9b528586610c43be8bccbe50e978afd47dfec (patch)
treef124d0f19990bf94ff2f79520ad7df50780468ea
parent31d2e07bc2e8660f6a8e4fe5f29b5d3b9e275ed1 (diff)
downloadcrow-23f9b528586610c43be8bccbe50e978afd47dfec.tar.gz
crow-23f9b528586610c43be8bccbe50e978afd47dfec.zip
fix old naming, check for host header
-rw-r--r--http_connection.h14
-rw-r--r--http_server.h3
-rw-r--r--test.py2
-rw-r--r--unittest.cpp1
4 files changed, 14 insertions, 6 deletions
diff --git a/http_connection.h b/http_connection.h
index 4d39641..5da294d 100644
--- a/http_connection.h
+++ b/http_connection.h
@@ -58,6 +58,8 @@ namespace crow
{503, "HTTP/1.1 503 Service Unavailable\r\n"},
};
+ bool is_invalid_request = false;
+
request req = parser_.to_request();
if (parser_.http_major == 1 && parser_.http_minor == 0)
{
@@ -65,14 +67,22 @@ namespace crow
if (!(req.headers.count("connection") && boost::iequals(req.headers["connection"],"Keep-Alive")))
close_connection_ = true;
}
- else
+ else if (parser_.http_major == 1 && parser_.http_minor == 1)
{
// HTTP/1.1
if (req.headers.count("connection") && req.headers["connection"] == "close")
close_connection_ = true;
+ if (!req.headers.count("host"))
+ {
+ is_invalid_request = true;
+ res = response(400);
+ }
}
- res = handler_->handle(req);
+ if (!is_invalid_request)
+ {
+ res = handler_->handle(req);
+ }
CROW_LOG_INFO << "HTTP/" << parser_.http_major << "." << parser_.http_minor << ' '
<< method_name(req.method) << " " << req.url
diff --git a/http_server.h b/http_server.h
index aa3124e..6cf8f4f 100644
--- a/http_server.h
+++ b/http_server.h
@@ -69,8 +69,7 @@ namespace crow
boost::asio::signal_set signals_;
Handler* handler_;
-
- uint16_t concurrency_ = {1};
+ uint16_t concurrency_{1};
std::string server_name_ = "Crow/0.1";
uint16_t port_;
};
diff --git a/test.py b/test.py
index 8af676b..357d2d3 100644
--- a/test.py
+++ b/test.py
@@ -1,6 +1,6 @@
import urllib
assert "Hello World!" == urllib.urlopen('http://localhost:18080').read()
-assert "About Flask example." == urllib.urlopen('http://localhost:18080/about').read()
+assert "About Crow example." == urllib.urlopen('http://localhost:18080/about').read()
assert 404 == urllib.urlopen('http://localhost:18080/list').getcode()
assert "3 bottles of beer!" == urllib.urlopen('http://localhost:18080/hello/3').read()
assert "100 bottles of beer!" == urllib.urlopen('http://localhost:18080/hello/100').read()
diff --git a/unittest.cpp b/unittest.cpp
index 58e0639..40903c5 100644
--- a/unittest.cpp
+++ b/unittest.cpp
@@ -280,7 +280,6 @@ TEST(multi_server)
for(auto ch:sendmsg)
{
char buf[1] = {ch};
- std::cerr << ch << '(' << (int)ch<<')'<<std::endl;
c.send(asio::buffer(buf));
}