Ignore:
Timestamp:
Sep 9, 2014, 8:12:00 PM (10 years ago)
Author:
alloc
Message:

fixes

Location:
binary-improvements/7dtd-server-fixes/src/NetConnections/Servers
Files:
3 edited

Legend:

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

    r182 r183  
    99        public class Telnet : IServer
    1010        {
    11                 private Thread telnetThread = null;
    1211                private TcpListener listener = null;
    13                 private bool closed = false;
    1412                private bool authEnabled = false;
    1513                private List<TelnetConnection> connections = new List<TelnetConnection> ();
     
    2927                                else
    3028                                        listener = new TcpListener (IPAddress.Loopback, port);
    31                                 telnetThread = ThreadMaster.Create ("thread TelnetListenThread", new ThreadStart (telnetListenThread));
    32                                 telnetThread.Start ();
     29
     30                                listener.Start ();
     31                                listener.BeginAcceptTcpClient (new AsyncCallback (AcceptClient), null);
    3332
    3433                                NetTelnetServer.RegisterServer (this);
     
    4039                }
    4140
    42                 private void telnetListenThread ()
     41                private void AcceptClient (IAsyncResult asyncResult)
    4342                {
    44                         try {
    45                                 listener.Start ();
    46                                 try {
    47                                         while (!closed) {
    48                                                 TelnetConnection c = new TelnetConnection (listener.AcceptTcpClient (), authEnabled);
    49                                                 connections.Add (c);
    50                                         }
    51                                 } catch (SocketException) {
    52                                 } catch (ThreadInterruptedException) {
    53                                 }
    54                                 ThreadMaster.Remove (Thread.CurrentThread.Name);
    55                         } catch (Exception ex) {
    56                                 Log.Out ("Error in TelnetListenThread: " + ex);
     43                        if (listener.Server.IsBound) {
     44                                TelnetConnection c = new TelnetConnection (listener.EndAcceptTcpClient (asyncResult), authEnabled);
     45                                connections.Add (c);
     46                                listener.BeginAcceptTcpClient (new AsyncCallback (AcceptClient), null);
    5747                        }
    5848                }
     
    6151                {
    6252                        try {
    63                                 closed = true;
    6453                                if (listener != null) {
    6554                                        listener.Stop ();
     
    6857                                foreach (TelnetConnection c in connections) {
    6958                                        c.Close ();
    70                                 }
    71                                 Thread.Sleep (100);
    72                                 if (telnetThread != null) {
    73                                         telnetThread.Interrupt ();
    7459                                }
    7560                        } catch (Exception e) {
  • binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs

    r182 r183  
    9393                                                }
    9494                                        }
     95                                } catch (ObjectDisposedException) {
    9596                                } catch (IOException) {
    9697                                } catch (ThreadInterruptedException) {
  • binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/Web.cs

    r182 r183  
    2929                                }
    3030
    31                                 if (!HttpListener.IsSupported)
    32                                         throw new NotSupportedException ("Needs Windows XP SP2, Server 2003 or later.");
     31                                if (!HttpListener.IsSupported) {
     32                                        Log.Out ("Webserver not started (needs Windows XP SP2, Server 2003 or later or Mono)");
     33                                        return;
     34                                }
    3335 
    3436                                handlers.Add ("/index.htm", new SimpleRedirectHandler ("/static/index.html"));
Note: See TracChangeset for help on using the changeset viewer.