Roman Puls created PROTON-1165: ---------------------------------- Summary: qpid proton cpp binding posix/io.cpp tests wrong error condition Key: PROTON-1165 URL: https://issues.apache.org/jira/browse/PROTON-1165 Project: Qpid Proton Issue Type: Bug Components: cpp-binding Affects Versions: 0.12.0 Environment: linux/posix Reporter: Roman Puls Assignee: Cliff Jansen
posix/io.cpp: size_t socket_engine::io_write(const char *buf, size_t size) { ssize_t n = ::write(socket_, buf, size); if (n == EAGAIN || n == EWOULDBLOCK) return 0; if (n < 0) check(n, "write: "); return n; } instead of testing n against EAGAIN/EWOULDBLOCK, n needs to be tested against -1 and then errno needs to be compared to EAGAIN/EWOULDBLOCK proposed fix: size_t socket_engine::io_write(const char *buf, size_t size) { ssize_t n = ::write(socket_, buf, size); if (n < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK) { return 0; } check(n, "write: "); } return n; } -- This message was sent by Atlassian JIRA (v6.3.4#6332)