Ignore:
Timestamp:
Sep 13, 2014, 12:55:47 PM (10 years ago)
Author:
alloc
Message:

fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs

    r187 r190  
    6363                }
    6464
    65                 public bool RegisterFailedLogin (int addressHash)
    66                 {
    67                         lock (loginAttemptsPerIP) {
    68                                 LoginAttempts la = loginAttemptsPerIP [addressHash];
    69                                 return la.LogAttempt ();
    70                         }
    71                 }
    72 
    7365                private void AcceptClient (IAsyncResult asyncResult)
    7466                {
     
    8072                                if (endpoint is IPEndPoint) {
    8173                                        addressHash = ((IPEndPoint)endpoint).Address.GetHashCode ();
    82                                         //Log.Out ("Hash: " + endpointAddressHash);
    8374                                } else {
     75                                        addressHash = endpoint.GetHashCode ();
    8476                                        Log.Out ("EndPoint is not an IPEndPoint but: " + endpoint.GetType ().ToString ());
    8577                                }
     
    8779                                lock (loginAttemptsPerIP) {
    8880                                        LoginAttempts la = null;
    89                                         if (loginAttemptsPerIP.ContainsKey(addressHash))
     81                                        if (loginAttemptsPerIP.ContainsKey (addressHash))
    9082                                                la = loginAttemptsPerIP [addressHash];
    9183                                        if (la == null) {
     
    9587                                        if (!la.IsBanned ()) {
    9688                                                TelnetConnection con = new TelnetConnection (this, client, authEnabled);
    97                                                 connections.Add (con);
     89                                                lock (connections) {
     90                                                        connections.Add (con);
     91                                                }
    9892                                        } else {
    9993                                                client.Close ();
     
    10296                                }
    10397                                listener.BeginAcceptTcpClient (new AsyncCallback (AcceptClient), null);
     98                        }
     99                }
     100
     101                public bool RegisterFailedLogin (TelnetConnection con)
     102                {
     103                        lock (loginAttemptsPerIP) {
     104                                LoginAttempts la = loginAttemptsPerIP [con.EndPointHash];
     105                                return la.LogAttempt ();
     106                        }
     107                }
     108
     109                public void ConnectionClosed (TelnetConnection con)
     110                {
     111                        lock (connections) {
     112                                connections.Remove (con);
    104113                        }
    105114                }
     
    112121                                        listener = null;
    113122                                }
    114                                 foreach (TelnetConnection c in connections) {
     123                                List<TelnetConnection> cur = new List<TelnetConnection> (connections);
     124                                foreach (TelnetConnection c in cur) {
    115125                                        c.Close ();
    116126                                }
     
    120130                }
    121131
    122                 private void RemoveClosedConnections ()
    123                 {
    124                         try {
    125                                 List<TelnetConnection> toRemove = new List<TelnetConnection> ();
    126                                 foreach (TelnetConnection c in connections) {
    127                                         if (c.IsClosed ())
    128                                                 toRemove.Add (c);
    129                                 }
    130                                 foreach (TelnetConnection c in toRemove) {
    131                                         connections.Remove (c);
    132                                 }
    133                         } catch (Exception e) {
    134                                 Log.Out ("Error in Telnet.RemoveClosedConnections: " + e);
    135                         }
    136                 }
    137 
    138                 public void WriteToClient (string line)
     132                public void SendLine (string line)
    139133                {
    140134                        if (line == null) {
    141135                                return;
    142136                        }
    143                         RemoveClosedConnections ();
    144                         foreach (TelnetConnection c in connections) {
    145                                 if (c.IsAuthenticated ())
    146                                         c.WriteLine (line);
     137                        lock (connections) {
     138                                foreach (TelnetConnection c in connections) {
     139                                        c.SendLine (line);
     140                                }
    147141                        }
    148142                }
    149143
    150                 public void WriteToClient_Single (string line, IConnection client)
     144                public void SendLog (string text, string trace, UnityEngine.LogType type)
    151145                {
    152                         if (line == null) {
    153                                 return;
    154                         }
    155                         RemoveClosedConnections ();
    156                         foreach (TelnetConnection con in connections) {
    157                                 if (con == client) {
    158                                         if (con.IsAuthenticated ())
    159                                                 con.WriteLine (line);
    160                                 }
    161                         }
     146                        throw new System.NotImplementedException ();
    162147                }
    163148
Note: See TracChangeset for help on using the changeset viewer.