reintroduced select to read

pull/14/head
Tom Early 7 years ago
parent e2a79581ad
commit d6288f61a9

@ -119,6 +119,22 @@ int CTCPReaderWriterClient::read(unsigned char* buffer, unsigned int length)
assert(length > 0U); assert(length > 0U);
assert(m_fd != -1); assert(m_fd != -1);
// Check that the recv() won't block
fd_set readFds;
FD_ZERO(&readFds);
FD_SET(m_fd, &readFds);
// Return after timeout
//timeval tv;
//tv.tv_sec = secs;
//tv.tv_usec = msecs * 1000;
int ret = select(m_fd + 1, &readFds, NULL, NULL, NULL); // wait until it's ready
if (ret < 0) {
fprintf(stderr, "Error returned from TCP client select, err=%d\n", errno);
return -1;
}
ssize_t len = recv(m_fd, buffer, length, 0); ssize_t len = recv(m_fd, buffer, length, 0);
if (-1 == len) { if (-1 == len) {
fprintf(stderr, "Error returned from recv, err=%d\n", errno); fprintf(stderr, "Error returned from recv, err=%d\n", errno);

Loading…
Cancel
Save

Powered by TurnKey Linux.