hyprctl: use a rolling buffer for reading requests

fixes #3846
This commit is contained in:
Vaxry 2023-11-13 16:30:37 +00:00
parent 2e26542e3b
commit 016a7a9c9b

View file

@ -1390,7 +1390,7 @@ int hyprCtlFDTick(int fd, uint32_t mask, void* data) {
const auto ACCEPTEDCONNECTION = accept4(HyprCtl::iSocketFD, (sockaddr*)&clientAddress, &clientSize, SOCK_CLOEXEC);
char readBuffer[1024];
std::array<char, 1024> readBuffer;
fd_set fdset;
FD_ZERO(&fdset);
@ -1403,10 +1403,17 @@ int hyprCtlFDTick(int fd, uint32_t mask, void* data) {
return 0;
}
auto messageSize = read(ACCEPTEDCONNECTION, readBuffer, 1024);
readBuffer[messageSize == 1024 ? 1023 : messageSize] = '\0';
std::string request(readBuffer);
std::string request;
while (true) {
readBuffer.fill(0);
auto messageSize = read(ACCEPTEDCONNECTION, readBuffer.data(), 1023);
if (messageSize < 1)
break;
std::string recvd = readBuffer.data();
request += recvd;
if (messageSize < 1023)
break;
}
std::string reply = "";