OctoTorrent.Client.SocketListener.EndAccept C# (CSharp) Method

EndAccept() private method

private EndAccept ( IAsyncResult result ) : void
result IAsyncResult
return void
        private void EndAccept(IAsyncResult result)
        {
            Socket peerSocket = null;
            try
            {
                var listener = (Socket)result.AsyncState;
                peerSocket = listener.EndAccept(result);

                var endpoint = (IPEndPoint)peerSocket.RemoteEndPoint;
                var uri = new Uri(string.Format("tcp://{0}{1}{2}", endpoint.Address, ':', endpoint.Port));
                var peer = new Peer("", uri, EncryptionTypes.All);
                var connection = peerSocket.AddressFamily == AddressFamily.InterNetwork
                                     ? (IConnection) new IPV4Connection(peerSocket, true)
                                     : new IPV6Connection(peerSocket, true);

                RaiseConnectionReceived(peer, connection, null);
            }
            catch (SocketException)
            {
                // Just dump the connection
                if (peerSocket != null)
                    peerSocket.Close();
            }
            catch (ObjectDisposedException)
            {
                // We've stopped listening
            }
            finally
            {
                try
                {
                    if (Status == ListenerStatus.Listening)
                        _listener.BeginAccept(_endAcceptCallback, _listener);
                }
                catch (ObjectDisposedException)
                {

                }
            }
        }