X-Git-Url: http://sjero.net/git/?p=iperf;a=blobdiff_plain;f=src%2FClient.cpp;h=b1dda9c2e99b592cd0bb834a292b1da35e392a21;hp=2195c4fd3027c8b34f9da14273af7ffcca75b310;hb=a5a03e6ab0fdf9c4d7d4c085fcf01436f9ba3202;hpb=90fc1e2c0c74319759b21d4a177c32691b88fdf3 diff --git a/src/Client.cpp b/src/Client.cpp index 2195c4f..b1dda9c 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -90,10 +90,7 @@ Client::Client( thread_Settings *inSettings ) { ReportSettings( inSettings ); if ( mSettings->multihdr && isMultipleReport( inSettings ) ) { mSettings->multihdr->report->connection.peer = mSettings->peer; - mSettings->multihdr->report->connection.size_peer = mSettings->size_peer; mSettings->multihdr->report->connection.local = mSettings->local; - SockAddr_setPortAny( &mSettings->multihdr->report->connection.local ); - mSettings->multihdr->report->connection.size_local = mSettings->size_local; } } @@ -308,34 +305,12 @@ void Client::InitiateServer() * ------------------------------------------------------------------- */ void Client::Connect() { - int rc; - - assert( mSettings->inHostname != NULL ); - - // The local socket needs to be filled in first, since the - // IPv6 address testing for the peer depends on the type of - // the local socket - SockAddr_localAddr( mSettings ); - SockAddr_remoteAddr( mSettings ); - MakeSocket( mSettings); - SetSocketOptions( mSettings ); - - if ( mSettings->mLocalhost != NULL ) { - // bind socket to local address - rc = bind( mSettings->mSock, (sockaddr*) &mSettings->local, - SockAddr_get_sizeof_sockaddr( &mSettings->local ) ); - WARN_errno( rc == SOCKET_ERROR, "bind" ); - } + socklen_t size_local = sizeof(mSettings->local); - // connect socket - rc = connect( mSettings->mSock, (sockaddr*) &mSettings->peer, - SockAddr_get_sizeof_sockaddr( &mSettings->peer )); - WARN_errno( rc == SOCKET_ERROR, "connect" ); + MakeSocket(mSettings); - getsockname( mSettings->mSock, (sockaddr*) &mSettings->local, - &mSettings->size_local ); - getpeername( mSettings->mSock, (sockaddr*) &mSettings->peer, - &mSettings->size_peer ); + /* determine local interface after establishing the connection */ + getsockname(mSettings->mSock, (struct sockaddr *)&mSettings->local, &size_local); /* The DCCP packet size must not exceed the MPS (RFC 4340, 14.) */ if (mSettings->mProtocol == kProto_DCCP) {