----Priorité élevée------------------------ - CGI (TODO HUGO) - Need to test normal body parsing (Verif avec HUGO) - 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() - handle redirection (Work, but weird behavior need deeper test) - Ecrire des tests ! - cgi_cpp_status.cpp with POST dont show error page. Normal or not ? For non blocking CGI : // We could maybe, // add FD_RD_FR_CHLD to epoll, // return to the main loop, // read FD_RD_FR_CHLD each time epoll say its ready, // then try waitpid() with WNOHANG after each read. // when waitpid() tell us its finish (or maybe when epoll return EPOLLHUP) // then actually parse the script_output and send it to the client. ----Priorité modérée------------------------ - namespace utils ? - change "std::string" to reference "std::string &" in most functions and add "const" if apropriate. - peut-être check si ip > 32bits ----Priorité faible------------------------ - 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") - do correct handling of special character in url (/rfc2119_files/errata.js.t%C3%A9l%C3%A9chargement -> /rfc2119_files/errata.js.téléchargement) - maybe add a "last_action_time" in Client for timeout handling little global timeout on epoll, like 100ms, then find client that actualy need to timeout if (actual_time - client.last_action_time > 10000ms){timeout(client)} - add headers "Date" and "Last-Modified" to response - change "std::string" to reference "std::string &" in most functions and add "const" if apropriate. - Il faut vérifier le path de la requête, voir si le serveur est bien censé délivrer cette ressource et si le client y a accès, avant d'appeler le CGI.