Otp.AbstractConnection.doConnect C# (CSharp) Method

doConnect() protected method

protected doConnect ( int port ) : void
port int
return void
        protected internal virtual void  doConnect(int port)
        {
            try
            {
                socket = new System.Net.Sockets.TcpClient();
                socket.NoDelay = true;
                var connected = false;
                Thread thr = new Thread(
                    () => {
                        try
                        {
                            socket.Connect(peer.host(), port);
                            connected = true;
                        }
                        catch (System.Exception)
                        {
                        }
                    }
                ) { IsBackground = true, Name = "OtpSockConnectThread" };

                thr.Start();

                Debug.WriteLine("-> MD5 CONNECT TO " + peer.host() + ": " + port);

                var untilTime = DateTime.Now.AddMilliseconds(_connectTimeout);

                while (!connected && DateTime.Now < untilTime)
                    Thread.Sleep(10);

                if (!connected) // Timeout
                {
                    throw new OtpTimeoutException("Timeout waiting for connect to " + peer.host() + ':' + port);
                }

                if (traceLevel >= OtpTrace.Type.handshakeThreshold)
                    OtpTrace.TraceEvent("-> MD5 CONNECT TO " + peer.host() + ":" + port);
                sendName(peer.distChoose, self.flags);
                recvStatus();
                int her_challenge = recvChallenge();
                byte[] our_digest = genDigest(her_challenge, auth_cookie);
                int our_challenge = genChallenge();
                sendChallengeReply(our_challenge, our_digest);
                recvChallengeAck(our_challenge);
                cookieOk = true;
                sendCookie = false;
            }
            catch (OtpAuthException ae)
            {
                close();
                throw ae;
            }
            catch (System.Net.Sockets.SocketException e)
            {
                close();
                throw new System.IO.IOException("Cannot connect to peer node: " + e.ToString());
            }
        }