i am an idiot

This commit is contained in:
uvos 2021-10-02 19:09:14 +02:00
parent 84dd4bc30a
commit 6f418f3c8f

View File

@ -106,10 +106,10 @@ void acceptThreadFunction( TCPServerSocket* servSock, std::vector<ClientHandler
clients->push_back(ClientHandler(newSock)); // Wait for a client to connect
struct epoll_event ev;
ev.events = EPOLLIN;
ev.data.fd = clients->size()-1;
ev.data.fd = newSock->getFD();
clientsMutex->unlock();
epoll_ctl(pollQue, EPOLL_CTL_ADD, newSock->getFD(), &ev);
char welcomeMesg[] = "UVOS serial multiplexer " VERSION "\n";
char welcomeMesg[] = "UVOS serial multiplexer " VERSION "\n";
clients->back().write(welcomeMesg, sizeof(welcomeMesg)-1);
std::cout<<"got client\n";
}
@ -205,21 +205,19 @@ int main(int argc, char* argv[])
{
if(ev.data.fd != -1)
{
clientsMutex.lock();
int i = ev.data.fd;
if(abs(i) >= clients.size())
{
clientsMutex.unlock();
std::vector<ClientHandler>::iterator client =
std::find(clients.begin(), clients.end(), ev.data.fd);
if(client == clients.end())
continue;
}
clientsMutex.lock();
std::cout<<"client poll\n";
if(ev.events & EPOLLIN)
clients[i].run(&clients, serial, config.verbose);
if((ev.events & (EPOLLHUP | EPOLLERR)) || clients[i].isDisconnected())
client->run(&clients, serial, config.verbose);
if((ev.events & (EPOLLHUP | EPOLLERR)) || client->isDisconnected())
{
clients[i].cleanUp();
clients.erase(clients.begin()+i);
std::cout<<"client "<<i<<" disconnected\n";
client->cleanUp();
clients.erase(client);
std::cout<<"client disconnected\n";
}
clientsMutex.unlock();
}