Files
42_INT_12_webserv/srcs/webserv/request.cpp
LuckyLaszlo ea3f3a390a bugfix invalid ptr in "ev.data.ptr" after vector<Client> resize/erase
+ persistent connections reintroduced
+ bugfix crash if invalid path in request
2022-07-31 13:19:11 +02:00

43 lines
877 B
C++

#include "Webserv.hpp"
#define BUFSIZE 8192
void Webserv::_request(Client *client)
{
_read_request(client);
if (g_last_signal)
_handle_last_signal();
}
void Webserv::_read_request(Client *client)
{
char buf[BUFSIZE+1];
ssize_t ret;
ret = ::recv(client->fd, buf, BUFSIZE, 0);
std::cerr << "recv() on fd(" << client->fd << ") returned = " << ret << "\n" ;
if (ret == -1)
{
std::perror("err recv()");
std::cerr << "client ptr =" << client << "\n"; // DEBUG
std::cerr << "client.fd =" << client->fd << "\n"; // DEBUG
_close_client(client->fd);
return ;
}
if (ret == 0) // Not sure what to do in case of 0. Just close ?
{
_close_client(client->fd);
return ;
}
/*
if (ret == BUFSIZE)
// send error like "request too long" to client
*/
buf[ret] = '\0';
client->raw_request.append(buf);
_epoll_update(client->fd, EPOLLOUT, EPOLL_CTL_MOD);
}