ssize_t bytesRead = recv(pfd.fd, buf, CHUNK_SIZE, 0);
if (bytesRead < 0) {
throw std::runtime_error("recv input from data");
}
auto &clientBuf = buffersMap[pfd];
clientBuf += string(buf, bytesRead);
if(!isHttpRequestComplete(clientBuf)){
return;
}
std::cout << "PARSED" << std::endl << clientBuf << std::endl;
auto parsedReq = parseRequest(clientBuf);
auto serverFD = pageDownloader.requestPageFromServer(parsedReq, clientBuf);
struct pollfd serverPFD{.fd = serverFD, .events = POLLIN};
fds.emplace_back(serverPFD);
serverSockets.insert(std::make_pair(serverPFD, parsedReq.uri));
storage.initData(parsedReq.uri);
pfd.events = POLLOUT;
clientBuf.clear();
}
Слежу в отладчике за pfd
struct pollfd serverPFD{.fd = serverFD, .events = POLLIN};
на этой строчке все ок
там условно fd = 4
events,revents=1
serverFD != 4
после fds.emplace_back(serverPFD);
pfd.fd = -1521125817
почему? Что за?
да а может ли быть что это просто из-за реаллокации указатель сбился
ну так проблема "вне" функции
Обсуждают сегодня