From f3fa4211a22d3b0e194b6960dc16fedc7be75c5b Mon Sep 17 00:00:00 2001 From: John Hood Date: Thu, 17 Aug 2017 11:51:29 -0400 Subject: [PATCH] Always use non-blocking sockets for recvmsg() --- src/network/network.cc | 8 +++----- src/network/network.h | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/network/network.cc b/src/network/network.cc index 922bde7..3294e6e 100644 --- a/src/network/network.cc +++ b/src/network/network.cc @@ -435,14 +435,12 @@ string Connection::recv( void ) for ( std::deque< Socket >::const_iterator it = socks.begin(); it != socks.end(); it++ ) { - bool islast = (it + 1) == socks.end(); string payload; try { - payload = recv_one( it->fd(), !islast ); + payload = recv_one( it->fd()); } catch ( NetworkException & e ) { if ( (e.the_errno == EAGAIN) || (e.the_errno == EWOULDBLOCK) ) { - assert( !islast ); continue; } else { throw; @@ -456,7 +454,7 @@ string Connection::recv( void ) throw NetworkException( "No packet received" ); } -string Connection::recv_one( int sock_to_recv, bool nonblocking ) +string Connection::recv_one( int sock_to_recv ) { /* receive source address, ECN, and payload in msghdr structure */ Addr packet_remote_addr; @@ -483,7 +481,7 @@ string Connection::recv_one( int sock_to_recv, bool nonblocking ) /* receive flags */ header.msg_flags = 0; - ssize_t received_len = recvmsg( sock_to_recv, &header, nonblocking ? MSG_DONTWAIT : 0 ); + ssize_t received_len = recvmsg( sock_to_recv, &header, MSG_DONTWAIT ); if ( received_len < 0 ) { throw NetworkException( "recvmsg", errno ); diff --git a/src/network/network.h b/src/network/network.h index db6d1ed..15ba76f 100644 --- a/src/network/network.h +++ b/src/network/network.h @@ -198,7 +198,7 @@ namespace Network { void prune_sockets( void ); - string recv_one( int sock_to_recv, bool nonblocking ); + string recv_one( int sock_to_recv ); void set_MTU( int family );