Security fixes for #5
This commit is contained in:
@@ -15,7 +15,6 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|||||||
|
|
||||||
import co.aikar.timings.Timing;
|
import co.aikar.timings.Timing;
|
||||||
import co.aikar.timings.Timings;
|
import co.aikar.timings.Timings;
|
||||||
import io.netty.channel.Channel.Unsafe;
|
|
||||||
|
|
||||||
public abstract class Akari {
|
public abstract class Akari {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -140,10 +140,6 @@ public class MixinMinecraftServer {
|
|||||||
this.an().c();
|
this.an().c();
|
||||||
MinecraftTimings.connectionTimer.stopTiming();
|
MinecraftTimings.connectionTimer.stopTiming();
|
||||||
|
|
||||||
Akari.callbackTiming().startTiming();
|
|
||||||
while ((runnable = Akari.callbackQueue.poll()) != null) runnable.run();
|
|
||||||
Akari.callbackTiming().stopTiming();
|
|
||||||
|
|
||||||
MinecraftTimings.playerListTimer.startTiming();
|
MinecraftTimings.playerListTimer.startTiming();
|
||||||
this.v.tick();
|
this.v.tick();
|
||||||
MinecraftTimings.playerListTimer.stopTiming();
|
MinecraftTimings.playerListTimer.stopTiming();
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
package io.akarin.server.mixin.core;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import net.minecraft.server.NetworkManager;
|
|
||||||
|
|
||||||
@Mixin(value = NetworkManager.class, remap = false)
|
|
||||||
public class MixinNetworkManager {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -31,6 +31,7 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
|
|||||||
import io.netty.util.concurrent.Future;
|
import io.netty.util.concurrent.Future;
|
||||||
import io.netty.util.concurrent.GenericFutureListener;
|
import io.netty.util.concurrent.GenericFutureListener;
|
||||||
import net.minecraft.server.ChatComponentText;
|
import net.minecraft.server.ChatComponentText;
|
||||||
|
import net.minecraft.server.ITickable;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.NetworkManager;
|
import net.minecraft.server.NetworkManager;
|
||||||
import net.minecraft.server.PacketPlayOutKickDisconnect;
|
import net.minecraft.server.PacketPlayOutKickDisconnect;
|
||||||
@@ -135,15 +136,13 @@ public class NonblockingServerConnection {
|
|||||||
Collections.shuffle(h);
|
Collections.shuffle(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
int submitted = 0;
|
|
||||||
Iterator<NetworkManager> it = h.iterator();
|
Iterator<NetworkManager> it = h.iterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
NetworkManager manager = it.next();
|
NetworkManager manager = it.next();
|
||||||
if (manager.h()) continue; // PAIL: NetworkManager::hasNoChannel
|
if (manager.h()) continue; // PAIL: NetworkManager::hasNoChannel
|
||||||
|
|
||||||
if (manager.isConnected()) {
|
if (manager.isConnected()) {
|
||||||
Akari.STAGE_TICK.submit(() -> processPackets(manager), null);
|
processPackets(manager);
|
||||||
submitted++;
|
|
||||||
} else {
|
} else {
|
||||||
// Spigot - Fix a race condition where a NetworkManager could be unregistered just before connection.
|
// Spigot - Fix a race condition where a NetworkManager could be unregistered just before connection.
|
||||||
if (manager.preparing) continue;
|
if (manager.preparing) continue;
|
||||||
@@ -152,10 +151,6 @@ public class NonblockingServerConnection {
|
|||||||
manager.handleDisconnection();
|
manager.handleDisconnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < submitted; i++) {
|
|
||||||
Akari.STAGE_TICK.take();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
import com.google.common.collect.Queues;
|
|
||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
|
|
||||||
import io.akarin.api.CheckedConcurrentLinkedQueue;
|
import io.akarin.api.CheckedConcurrentLinkedQueue;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user