diff --git a/src/posix/platform/hdlc_interface.cpp b/src/posix/platform/hdlc_interface.cpp index 92ece5758..8583065d0 100644 --- a/src/posix/platform/hdlc_interface.cpp +++ b/src/posix/platform/hdlc_interface.cpp @@ -141,20 +141,15 @@ void HdlcInterface::Read(void) rval = read(mSockFd, buffer, sizeof(buffer)); - if (rval < 0) - { - perror("HdlcInterface::Read()"); - - if (errno != EAGAIN) - { - abort(); - } - } - if (rval > 0) { Decode(buffer, static_cast(rval)); } + else if ((rval < 0) && (errno != EAGAIN) && (errno != EINTR)) + { + perror("HdlcInterface::Read()"); + exit(OT_EXIT_FAILURE); + } } void HdlcInterface::Decode(const uint8_t *aBuffer, uint16_t aLength)