X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsocketengine_select.cpp;h=ef5f2071f82aa2853f9cab99e4435daf36a23db0;hb=b0e469b0bbdbc76692364e1f52ef613cc02a2a06;hp=f1960f09df24bc0ee09c300e85f7e70c21615a4b;hpb=e473ba1a256b6b38a7ac567ae5b77612e1781a82;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/socketengine_select.cpp b/src/socketengine_select.cpp index f1960f09d..ef5f2071f 100644 --- a/src/socketengine_select.cpp +++ b/src/socketengine_select.cpp @@ -18,7 +18,6 @@ SelectEngine::SelectEngine(InspIRCd* Instance) : SocketEngine(Instance) { - ServerInstance->Log(DEBUG,"SelectEngine::SelectEngine()"); EngineHandle = 0; CurrentSetSize = 0; memset(writeable, 0, sizeof(writeable)); @@ -26,22 +25,16 @@ SelectEngine::SelectEngine(InspIRCd* Instance) : SocketEngine(Instance) SelectEngine::~SelectEngine() { - ServerInstance->Log(DEBUG,"SelectEngine::~SelectEngine()"); } bool SelectEngine::AddFd(EventHandler* eh) { int fd = eh->GetFd(); if ((fd < 0) || (fd > MAX_DESCRIPTORS)) - { - ServerInstance->Log(DEBUG,"ERROR: FD of %d added above max of %d",fd,MAX_DESCRIPTORS); return false; - } + if (GetRemainingFds() <= 1) - { - ServerInstance->Log(DEBUG,"ERROR: System out of file descriptors!"); return false; - } fds[fd] = fd; @@ -49,9 +42,10 @@ bool SelectEngine::AddFd(EventHandler* eh) return false; ref[fd] = eh; - ServerInstance->Log(DEBUG,"Add socket %d",fd); CurrentSetSize++; + + ServerInstance->Log(DEBUG,"New file descriptor: %d", fd); return true; } @@ -60,7 +54,7 @@ void SelectEngine::WantWrite(EventHandler* eh) writeable[eh->GetFd()] = true; } -bool SelectEngine::DelFd(EventHandler* eh) +bool SelectEngine::DelFd(EventHandler* eh, bool force) { int fd = eh->GetFd(); @@ -73,6 +67,8 @@ bool SelectEngine::DelFd(EventHandler* eh) CurrentSetSize--; ref[fd] = NULL; + + ServerInstance->Log(DEBUG,"Remove file descriptor: %d", fd); return true; } @@ -110,8 +106,8 @@ int SelectEngine::DispatchEvents() FD_SET (a->second, &errfdset); } - tval.tv_sec = 0; - tval.tv_usec = 50L; + tval.tv_sec = 1; + tval.tv_usec = 0; sresult = select(FD_SETSIZE, &rfdset, &wfdset, &errfdset, &tval); if (sresult > 0) { @@ -146,13 +142,12 @@ int SelectEngine::DispatchEvents() } if (ev[i]) { - ServerInstance->Log(DEBUG,"Handle %s event on fd %d",writeable[ev[i]->GetFd()] || !ev[i]->Readable() ? "write" : "read", ev[i]->GetFd()); if (writeable[ev[i]->GetFd()]) { if (ev[i]) ev[i]->HandleEvent(EVENT_WRITE); writeable[ev[i]->GetFd()] = false; - + } else {