Fix crashing again.

This commit is contained in:
UnknownShadow200 2017-08-13 08:57:27 +10:00
parent 155527e609
commit e26cd5f960
2 changed files with 15 additions and 11 deletions

View File

@ -29,22 +29,23 @@ namespace MCGalaxy.Network {
int unprocessedLen; int unprocessedLen;
readonly SocketAsyncEventArgs recvArgs = new SocketAsyncEventArgs(); readonly SocketAsyncEventArgs recvArgs = new SocketAsyncEventArgs();
byte[] sendBuffer = new byte[1536]; byte[] sendBuffer = new byte[2048];
readonly object sendLock = new object(); readonly object sendLock = new object();
readonly Queue<byte[]> sendQueue = new Queue<byte[]>(64); readonly Queue<byte[]> sendQueue = new Queue<byte[]>(64);
volatile bool sendInProgress; volatile bool sendInProgress;
readonly SocketAsyncEventArgs sendArgs = new SocketAsyncEventArgs(); readonly SocketAsyncEventArgs sendArgs = new SocketAsyncEventArgs();
public TcpSocket(Player p, Socket s) { public TcpSocket(Player p, Socket s) {
player = p; socket = s; player = p; socket = s;
recvArgs.UserToken = this;
recvArgs.UserToken = this; recvArgs.SetBuffer(recvBuffer, 0, recvBuffer.Length);
recvArgs.SetBuffer(recvBuffer, 0, recvBuffer.Length); sendArgs.UserToken = this;
recvArgs.Completed += recvCallback;
sendArgs.UserToken = this;
sendArgs.SetBuffer(sendBuffer, 0, sendBuffer.Length); sendArgs.SetBuffer(sendBuffer, 0, sendBuffer.Length);
sendArgs.Completed += sendCallback; }
public void RegisterCallbacks() {
recvArgs.Completed += recvCallback;
sendArgs.Completed += sendCallback;
} }
public string RemoteIP { public string RemoteIP {

View File

@ -51,7 +51,10 @@ namespace MCGalaxy {
public Player(Socket s) { public Player(Socket s) {
spamChecker = new SpamChecker(this); spamChecker = new SpamChecker(this);
try { try {
Socket = new TcpSocket(this, s); TcpSocket tcp = new TcpSocket(this, s);
Socket = tcp;
tcp.RegisterCallbacks();
ip = Socket.RemoteIP; ip = Socket.RemoteIP;
SessionID = Interlocked.Increment(ref sessionCounter) & SessionIDMask; SessionID = Interlocked.Increment(ref sessionCounter) & SessionIDMask;
Logger.Log(LogType.UserActivity, ip + " connected to the server."); Logger.Log(LogType.UserActivity, ip + " connected to the server.");
@ -115,7 +118,7 @@ namespace MCGalaxy {
string viptitle = string viptitle =
(devPrefix && isMod) ? string.Format("{0}[&aInfo{0}] ", color) : (devPrefix && isMod) ? string.Format("{0}[&aInfo{0}] ", color) :
(devPrefix && isDev) ? string.Format("{0}[&9Dev{0}] ", color) : ""; (devPrefix && isDev) ? string.Format("{0}[&9Dev{0}] ", color) : "";
prefix = prefix + viptitle; prefix = prefix + viptitle;
prefix = (title.Length == 0) ? prefix : prefix + color + "[" + titlecolor + title + color + "] "; prefix = (title.Length == 0) ? prefix : prefix + color + "[" + titlecolor + title + color + "] ";
} }