Skip to content
Snippets Groups Projects
Commit 3c6707b0 authored by g0dil's avatar g0dil
Browse files

Scheduler: BUGFIX: check fdErase_ when (re-)adding a filedescriptor

parent 0313acf3
No related branches found
No related tags found
No related merge requests found
......@@ -104,12 +104,20 @@ prefix_ void senf::Scheduler::unregisterSignal(unsigned signal)
prefix_ void senf::Scheduler::do_add(int fd, FdCallback const & cb, int eventMask)
{
if (eventMask == 0)
return;
FdTable::iterator i (fdTable_.find(fd));
int action (EPOLL_CTL_MOD);
if (i == fdTable_.end()) {
action = EPOLL_CTL_ADD;
i = fdTable_.insert(std::make_pair(fd, EventSpec())).first;
}
if (i->second.epollMask() == 0) {
action = EPOLL_CTL_ADD;
fdErase_.erase( std::remove(fdErase_.begin(), fdErase_.end(), unsigned(fd)),
fdErase_.end() );
}
if (eventMask & EV_READ) i->second.cb_read = cb;
if (eventMask & EV_PRIO) i->second.cb_prio = cb;
......@@ -133,6 +141,9 @@ prefix_ void senf::Scheduler::do_add(int fd, FdCallback const & cb, int eventMas
prefix_ void senf::Scheduler::do_remove(int fd, int eventMask)
{
if (eventMask == 0)
return;
FdTable::iterator i (fdTable_.find(fd));
if (i == fdTable_.end())
return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment