* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2008 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
*/
#include "inspircd.h"
+#ifndef WINDOWS
#include <sys/select.h>
+#endif // WINDOWS
#include "socketengines/socketengine_select.h"
{
if (FD_ISSET (ev[i]->GetFd(), &errfdset))
{
- if (ev[i])
- {
- if (getsockopt(ev[i]->GetFd(), SOL_SOCKET, SO_ERROR, &errcode, &codesize) < 0)
- errcode = errno;
+ ErrorEvents++;
+
+ if (getsockopt(ev[i]->GetFd(), SOL_SOCKET, SO_ERROR, (char*)&errcode, &codesize) < 0)
+ errcode = errno;
+
+ ev[i]->HandleEvent(EVENT_ERROR, errcode);
- ev[i]->HandleEvent(EVENT_ERROR, errcode);
- }
continue;
}
- if (ev[i])
+ else
{
if (writeable[ev[i]->GetFd()])
{
+ WriteEvents++;
writeable[ev[i]->GetFd()] = false;
- if (ev[i])
- ev[i]->HandleEvent(EVENT_WRITE);
+ ev[i]->HandleEvent(EVENT_WRITE);
}
else
{
- if (ev[i])
- ev[i]->HandleEvent(ev[i]->Readable() ? EVENT_READ : EVENT_WRITE);
+ if (ev[i]->Readable())
+ {
+ ReadEvents++;
+ ev[i]->HandleEvent(EVENT_READ);
+ }
+ else
+ {
+ WriteEvents++;
+ ev[i]->HandleEvent(EVENT_WRITE);
+ }
}
}
}