namespace WA {
time_t SOCKET_TIMEOUT = 60 * 2; // 2 minutes
+int SD_VECTOR_INCREASE_SIZE = 20;
MessageBuffer SocketManager::newMessage(){
auto buffer = std::make_unique<MessageBuffer>();
if (m_maxDesc < fd) {
m_maxDesc = fd;
if ((int)m_socketDescriptionVector.size() <= fd)
- m_socketDescriptionVector.resize(fd+20);
+ m_socketDescriptionVector.resize(fd + SD_VECTOR_INCREASE_SIZE);
}
}
unsigned int clientLen = sizeof(clientAddr);
int client = accept4(m_listenSock, (struct sockaddr*) &clientAddr, &clientLen, SOCK_NONBLOCK);
if (-1 == client) {
- LogErrno("accept");
+ LogWithErrno(errno, "accept4");
+ return;
+ }
+ else if (std::numeric_limits<int>::max() - SD_VECTOR_INCREASE_SIZE <= client) {
+ LogError("An integer overflow my occur due to addtion between fd("
+ << client << ")and SD_VECTOR_INCREASE_SIZE("
+ << SD_VECTOR_INCREASE_SIZE << ")");
return;
}
CreateDefaultReadSocketDescription(client);