bonissanti / 42SP_13_Webserv

0 stars 0 forks source link

Bug mutiplos servers #10

Closed bonissanti closed 1 month ago

bonissanti commented 1 month ago

Tem um bug quando é um arquivo de configuração simples, tipo esse (arquivo basic.conf):

server {
    listen = 1026
    route cgi{
        root = /cgi
        index = random_file.py 
    }
}
server {
    listen = 1027
}

O que acontece é la na função create(). Ele configura o server corretamente trocando o _listen 100 pelo 1026. Só que ele não saiu quando a linha foi '}', consequentemente ele seguiu viagem e sobrescreveu o _listen 1026 pelo 1027.

No main, no looping abaixo:

        for (int i = 0; i < numbersOfServers; i++) {
            servers[i].create(file);
        }

Considerando o arquivo de configuração, serão dois servers, isso aí ta certo, daí o i = 0 seria para configurar o server da porta 1026 e o i = 1 seria para a porta 1027. Só que como não teve o break do '}' e a porta foi sobrescrita, o file ta vazio quando o getline for ler (tudo foi lido numa tacada só no looping anterior). Daí o compilador bate nessa linha de baixo, atendendo a condição e jogando a exceção:

    if (_listen == 100)
        throw Server::exception(RED "Error: listen is not set" RESET);