i am an idiot

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