diff options
Diffstat (limited to 'src/coordinator.c')
-rw-r--r-- | src/coordinator.c | 8 |
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" ); |