|
@@ -572,9 +572,6 @@ int main(int argc, char **argv)
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //DEBUG
|
|
|
|
|
- printf("## cp.nfd %i\n", (int)nfds);
|
|
|
|
|
-
|
|
|
|
|
for(i=0; i < nfds; i++)
|
|
for(i=0; i < nfds; i++)
|
|
|
{
|
|
{
|
|
|
if( fds[i].fd == server_fd )
|
|
if( fds[i].fd == server_fd )
|
|
@@ -582,20 +579,21 @@ int main(int argc, char **argv)
|
|
|
|
|
|
|
|
if(fds[i].revents & POLLIN)
|
|
if(fds[i].revents & POLLIN)
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
read_return = recv(fds[i].fd, input_line + input_idx, sizeof(input_line) - input_idx, 0);
|
|
read_return = recv(fds[i].fd, input_line + input_idx, sizeof(input_line) - input_idx, 0);
|
|
|
|
|
|
|
|
- //If the socket has closed politely (0), or had an error other than EINTR...
|
|
|
|
|
|
|
+ // If the socket has closed politely (0), or had an error other than EINTR...
|
|
|
|
|
+ //
|
|
|
if( (read_return == 0) || ((read_return < 0) && (errno != EINTR)) )
|
|
if( (read_return == 0) || ((read_return < 0) && (errno != EINTR)) )
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
- //DEBUG
|
|
|
|
|
- printf("## bang\n");
|
|
|
|
|
-
|
|
|
|
|
close(server_fd);
|
|
close(server_fd);
|
|
|
server_fd = -1;
|
|
server_fd = -1;
|
|
|
|
|
|
|
|
- usleep(POLL_TIMEOUT * 1000);
|
|
|
|
|
|
|
+ // EXPERIMENTAL: this might need to go when moving to production.
|
|
|
|
|
+ // It's here to try and reduce the polling frequency when no connection
|
|
|
|
|
+ // is present
|
|
|
|
|
+ //
|
|
|
|
|
+ usleep(POLL_TIMEOUT * 1000);
|
|
|
|
|
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
@@ -689,6 +687,7 @@ int main(int argc, char **argv)
|
|
|
}
|
|
}
|
|
|
else if( fds[i].fd == commhub_fd )
|
|
else if( fds[i].fd == commhub_fd )
|
|
|
{
|
|
{
|
|
|
|
|
+
|
|
|
//If we've lost connection, break this loop and poll all over again
|
|
//If we've lost connection, break this loop and poll all over again
|
|
|
if(fds[i].revents & (POLLERR | POLLHUP | POLLNVAL))
|
|
if(fds[i].revents & (POLLERR | POLLHUP | POLLNVAL))
|
|
|
{
|
|
{
|
|
@@ -699,7 +698,6 @@ int main(int argc, char **argv)
|
|
|
|
|
|
|
|
if(fds[i].revents & POLLIN)
|
|
if(fds[i].revents & POLLIN)
|
|
|
{
|
|
{
|
|
|
-// printf("Trying to read from hub...\n");
|
|
|
|
|
read_return = get_message(commhub_fd, &incoming_msg);
|
|
read_return = get_message(commhub_fd, &incoming_msg);
|
|
|
|
|
|
|
|
if( read_return < 0 )
|
|
if( read_return < 0 )
|