Permalink
Browse files

Use dup() instead of move semantics for Network::Socket

  • Loading branch information...
1 parent 05ec364 commit 6a16eecce0d8eaed6986be1ca0ba2bb6e07766df @keithw keithw committed Nov 23, 2012
Showing with 12 additions and 14 deletions.
  1. +11 −11 src/network/network.cc
  2. +1 −3 src/network/network.h
View
@@ -140,8 +140,7 @@ void Connection::prune_sockets( void )
}
Connection::Socket::Socket()
- : _fd( socket( AF_INET, SOCK_DGRAM, 0 ) ),
- _moved( false )
+ : _fd( socket( AF_INET, SOCK_DGRAM, 0 ) )
{
if ( _fd < 0 ) {
throw NetworkException( "socket", errno );
@@ -570,25 +569,26 @@ uint64_t Connection::timeout( void ) const
Connection::Socket::~Socket()
{
- if ( !_moved ) {
- if ( close( _fd ) < 0 ) {
- throw NetworkException( "close", errno );
- }
+ if ( close( _fd ) < 0 ) {
+ throw NetworkException( "close", errno );
}
}
Connection::Socket::Socket( const Socket & other )
- : _fd( other._fd ),
- _moved( false )
+ : _fd( dup( other._fd ) )
{
- other.move();
+ if ( _fd < 0 ) {
+ throw NetworkException( "socket", errno );
+ }
}
const Connection::Socket & Connection::Socket::operator=( const Socket & other )
{
- _fd = other._fd;
+ _fd = dup( other._fd );
- other.move();
+ if ( _fd < 0 ) {
+ throw NetworkException( "socket", errno );
+ }
return *this;
}
View
@@ -107,11 +107,9 @@ namespace Network {
{
private:
int _fd;
- mutable bool _moved;
public:
- int fd( void ) const { assert( !_moved ); return _fd; }
- void move( void ) const { assert( !_moved ); _moved = true; }
+ int fd( void ) const { return _fd; }
Socket();
~Socket();

0 comments on commit 6a16eec

Please sign in to comment.