#include "Webserv.hpp" void Webserv::init_virtual_servers() // ADD config param { _socket_fd = ::socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0); // (SOCK_CLOEXEC) for CGI fork ? if (_socket_fd == -1) { std::perror("err socket()"); throw std::runtime_error("Socket init"); } _bind(_socket_fd, 4040); _listen(_socket_fd, 512); // 512 arbitrary if (_epoll_update(_socket_fd, EPOLLIN, EPOLL_CTL_ADD) == -1) throw std::runtime_error("Socket init"); } void Webserv::_bind(int socket_fd, in_port_t port) { // cast invalid ? how to ? // const struct sockaddr* cast_test = static_cast(addr); struct sockaddr_in addr; std::memset(&addr, 0, sizeof addr); addr.sin_family = AF_INET; addr.sin_port = ::htons(port); addr.sin_addr.s_addr = ::htonl(INADDR_ANY); // htonl useless with 0 value (INADDR_ANY) ? if (::bind(socket_fd, (const sockaddr*)&addr, sizeof addr) == -1) { std::perror("err bind()"); throw std::runtime_error("Socket bind"); } } void Webserv::_listen(int socket_fd, unsigned int max_connections) { if (::listen(socket_fd, max_connections) == -1) { std::perror("err listen()"); throw std::runtime_error("Socket listen"); } }