Я написал прокси сервер. Сервер однопоточный, работает через select. У меня появился участок кода который блокирует сервер:
bool closeConnect = false;
std::string req = _getReq(closeConnect, fd);
try {
_dbSock->init();
_dbSock->connectTo();
} catch (std::exception &e) {
std::cerr << "DB sock: " << e.what() << std::endl;
closeConnect = true;
}
if (!closeConnect) {
send(_dbSock->getSocket(), req.c_str(), req.size(), 0);
bool tmp;
req.erase();
req = _getReq(tmp, _dbSock->getSocket());
std::cerr << req.size();
send(fd, req.c_str(), req.length(), 0);
}
Знаю что блокируется на моменте общения с бд, но не понимаю как поправить это? Пробовал сначала открыть сокет для дб, и добавить его в fd_set но, скорее всего я делал это как то не правильно, потому что вообще все переставало работать.