Fix a potential loop request bug which may cause server to overload

This commit is contained in:
Tindy X committed 2020-01-30 11:10:19 +08:00
1 parent 2073d0ef25
commit 7c546e9606
2 files changed
+9 -1

No files matched your search

+8
View File
@@ -16,6 +16,8 @@
#include "webserver.h"
#include "socket.h"
extern std::string user_agent_str;
struct responseRoute
{
std::string method;
@@ -76,6 +78,12 @@ void OnReq(evhttp_request *req, void *args)
int retVal;
std::string postdata, content_type, return_data;
if(user_agent_str.compare(evhttp_find_header(req->input_headers, "User-Agent")) == 0)
{
evhttp_send_error(req, 500, "Loop request detected!");
return;
}
if(EVBUFFER_LENGTH(req->input_buffer) != 0)
{
postdata.assign((char *)EVBUFFER_DATA(req->input_buffer), EVBUFFER_LENGTH(req->input_buffer));