check error after reading
This commit is contained in:
@@ -180,6 +180,11 @@ string fetchData(ebusd::TCPSocket* socket, bool &listening, uint16_t timeout) {
|
|||||||
listening = false;
|
listening = false;
|
||||||
break; // remote hung up
|
break; // remote hung up
|
||||||
}
|
}
|
||||||
|
// check previous error
|
||||||
|
if (ret > 0 && ((fds[0].revents & POLLERR) || (fds[1].revents & POLLERR))) {
|
||||||
|
listening = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
// wait for new fd event
|
// wait for new fd event
|
||||||
ret = ppoll(fds, nfds, &tdiff, nullptr);
|
ret = ppoll(fds, nfds, &tdiff, nullptr);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@@ -187,10 +192,6 @@ string fetchData(ebusd::TCPSocket* socket, bool &listening, uint16_t timeout) {
|
|||||||
listening = false;
|
listening = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (ret > 0 && ((fds[0].revents & POLLERR) || (fds[1].revents & POLLERR))) {
|
|
||||||
listening = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
#ifdef HAVE_PSELECT
|
#ifdef HAVE_PSELECT
|
||||||
// set readfds to inital checkfds
|
// set readfds to inital checkfds
|
||||||
@@ -221,7 +222,6 @@ string fetchData(ebusd::TCPSocket* socket, bool &listening, uint16_t timeout) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (newData) {
|
if (newData) {
|
||||||
if (socket->isValid()) {
|
|
||||||
datalen = socket->recv(data, sizeof(data));
|
datalen = socket->recv(data, sizeof(data));
|
||||||
|
|
||||||
if (datalen < 0) {
|
if (datalen < 0) {
|
||||||
@@ -239,10 +239,6 @@ string fetchData(ebusd::TCPSocket* socket, bool &listening, uint16_t timeout) {
|
|||||||
if (str.length() >= 2 && str[str.length()-2] == '\n' && str[str.length()-1] == '\n') {
|
if (str.length() >= 2 && str[str.length()-2] == '\n' && str[str.length()-1] == '\n') {
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
listening = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (newInput) {
|
} else if (newInput) {
|
||||||
getline(cin, message);
|
getline(cin, message);
|
||||||
if (message.length() == 0) {
|
if (message.length() == 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user