summaryrefslogtreecommitdiff
path: root/src/coordinator.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/coordinator.c')
-rw-r--r--src/coordinator.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/coordinator.c b/src/coordinator.c
index 77ff484..57642be 100644
--- a/src/coordinator.c
+++ b/src/coordinator.c
@@ -43,7 +43,6 @@ static void *coordinator_func( void *thread_data )
char *answer = NULL;
int bytes = nn_recv( coordinator_sock, &answer, NN_MSG, 0 );
- if( bytes == ETIMEDOUT ) continue;
if( coordinator_must_terminate ) continue;
if( bytes >= 0 ) {
printf( "coordinator received: %s\n", answer );
@@ -67,7 +66,8 @@ static void *coordinator_func( void *thread_data )
bytes = nn_send( coordinator_sock, msg, msg_size, 0 );
if( bytes < 0 ) {
if( errno == ETERM ) {
- goto END;
+ coordinator_must_terminate = 1;
+ continue;
} else {
fprintf( stderr, "ERROR: nn_send returned %d: %s (%d)\n",
bytes, nn_strerror( errno ), errno );
@@ -81,6 +81,9 @@ static void *coordinator_func( void *thread_data )
if( bytes < 0 ) {
if( errno == EAGAIN || errno == EINTR ) {
continue;
+ } else if( errno == ETERM ) {
+ coordinator_must_terminate = 1;
+ continue;
} else {
fprintf( stderr, "ERROR: nn_recv returned %d: %s (%d)\n",
bytes, nn_strerror( errno ), errno );
@@ -88,7 +91,6 @@ static void *coordinator_func( void *thread_data )
}
}
- END:
(void)nn_shutdown( coordinator_sock, 0 );
puts( "coordinator disconnected" );