From fe89be65f616982ed45ddefee789668e13e63f83 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 15 Aug 2022 19:31:43 +0200 Subject: [PATCH] Tested and fixed server_name resolution --- default.config | 13 +++++++++++-- memo.txt | 7 +++---- srcs/webserv/response.cpp | 16 +++++++++++++--- www2/index.html | 11 +++++++++++ 4 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 www2/index.html diff --git a/default.config b/default.config index e93c393..c6341c6 100644 --- a/default.config +++ b/default.config @@ -1,8 +1,9 @@ + server { # this is a comment - server_name our_server; + server_name server1; listen 0.0.0.0:4040; @@ -92,5 +93,13 @@ server { # allow_methods DELETE; # } - +} + +server { + server_name server2; + + listen 0.0.0.0:4040; + + index index.html; + root ./www2/; } diff --git a/memo.txt b/memo.txt index 057462b..7ded14e 100644 --- a/memo.txt +++ b/memo.txt @@ -1,21 +1,20 @@ IN 42 SUBJECT AND/OR PRIORITY : - CGI (TODO HUGO) -- chunked request (need testing) -- Need to test normal body parsing -- upload files testing and adjustements +- Need to test normal body parsing (Verif avec HUGO) - Ecrire des tests ! - handle redirection (Work, but weird behavior need deeper test) -- check return 0 de send() - curl --resolve, for testing hostname + curl -v --resolve server1:4040:127.0.0.1 --resolve server2:4040:127.0.0.1 server1:4040 - test limit de connexions sur listen() ----------------------------- Si ce n'est pas deja fait : peut-être check si ip > 32bits ----------------------------- +- chunked request (need testing) - client_body_limit 0 valeur special pour desactiver dans config - gerer le champ "Accept" du client - gerer les ".." dans un URL (verifier que l'on ne sort pas du dossier "root") diff --git a/srcs/webserv/response.cpp b/srcs/webserv/response.cpp index 556ab4d..c3a7776 100644 --- a/srcs/webserv/response.cpp +++ b/srcs/webserv/response.cpp @@ -57,6 +57,11 @@ int Webserv::_send_response(Client *client) std::cerr << "client.fd =" << client->get_cl_fd() << "\n"; // DEBUG return SEND_CLOSE; } + if (ret == 0) // actually never happen ? + { + std::cerr << "SEND RET 0 for client.fd =" << client->get_cl_fd() << "\n"; // DEBUG + return SEND_CLOSE; + } std::cerr << "ret send() = " << ret << "\n"; // DEBUG return SEND_COMPLETE; @@ -167,12 +172,17 @@ void Webserv::_append_body(Client *client, const std::string &body, const std::s ServerConfig *_determine_process_server(Client *client, std::vector &servers) { /* + Behavior like this : http://nginx.org/en/docs/http/request_processing.html - _determine_process_server() should be complete. - TODO : test it */ - std::string const &server_name = client->get_rq_headers("Host"); + std::string server_name = client->get_rq_headers("Host"); + std::cerr << "server_name = " << server_name << "\n"; + size_t pos = server_name.rfind(':'); + if (pos != NPOS) + server_name.erase(pos); + std::cerr << "server_name = " << server_name << "\n"; + std::vector::iterator it = servers.begin(); std::vector::iterator default_server = servers.end(); diff --git a/www2/index.html b/www2/index.html new file mode 100644 index 0000000..3cf91ae --- /dev/null +++ b/www2/index.html @@ -0,0 +1,11 @@ + + + + Le Webserv + + +

( ͡◉ ͜ ʖ ͡◉) Le index du serveur 2 !

+
+

˚ಎ˚

+ +