i am an idiot
This commit is contained in:
parent
84dd4bc30a
commit
6f418f3c8f
24
main.cpp
24
main.cpp
@ -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();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user