CSocket::CSocket( const CSocket& src ) { if ( !src.isValid() ) { throw CSocketException( "Source Socket is invalid, so new socket can't be better" ); } socklen_t addr_length = m_otAddr.SizeGet(); m_nSocket = ::accept( src.m_nSocket, src.m_otAddr, &addr_length ); if ( m_nSocket <= 0 ) { throw CSocketException( "Could not 'accept', new socket is invalid" ); } timeval timeout; timeout.tv_sec = 0; timeout.tv_usec = 1000; // looks like this value is ignored int nResult = ::setsockopt( m_nSocket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof(timeout) ); if ( nResult == -1 ) { throw CSocketException( "Could not set SO_RCVTIMEO, new socket is invalid" ); } // if ( result == -1 ) } // CSocket::CSocket( const CSocket& src )