pfd.events = POLLIN | POLLRDHUP;
pfd.revents = 0;
+ int ret = 0;
+
while (true)
{
- poll(&pfd, 1, -1);
+ ret = poll(&pfd, 1, -1);
+ if (ret < 0)
+ {
+ if (errno == EINTR)
+ {
+ continue;
+ }
+
+ SysLogException(NID_IO, E_SYSTEM, "[E_SYSTEM] Failed to poll (%d, %s).", errno, strerror(errno));
+ return E_SYSTEM;
+ }
if (pfd.revents & POLLRDHUP)
{
+ SysLogException(NID_IO, E_SYSTEM, "[E_SYSTEM] POLLRDHUP");
return E_SYSTEM;
}
readSize = read(fd, buffer, 1024);
}
- message.append(buffer, readSize);
+ if (readSize > 0)
+ {
+ message.append(buffer, readSize);
+ }
pEndOfMessage = (char*) IPC::Message::FindNext(message.data(), message.data() + message.size());
if (pEndOfMessage)