This commit is contained in:
md_5 2013-04-19 21:07:42 +10:00
parent 566e67a188
commit fc6f817452
3 changed files with 39 additions and 12 deletions

View File

@ -1,8 +1,35 @@
From d2c3009e1ee527e5d6b990264190370ff50444b2 Mon Sep 17 00:00:00 2001 From e2f25a41e80e4c9ece6059b2808f003a49556769 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au> From: md_5 <md_5@live.com.au>
Date: Fri, 19 Apr 2013 17:44:39 +1000 Date: Fri, 19 Apr 2013 17:44:39 +1000
Subject: [PATCH] Netty Subject: [PATCH] Netty
Implement an uber efficient network engine based on the
Java NIO framework Netty. This is basically a complete rewrite of the
Minecraft network engine with many distinct advantages. First and foremost,
there will no longer be the horrid, and redundant case of 2, or even at
times, 3 threads per a connection. Instead low level select/epoll based NIO
is used. The number of threads used for network reading and writing will
scale automatically to the number of cores for use on your server. In most
cases this will be around 8 threads for a 4 core server, much better than the
up to 1000 threads that could be in use at one time with the old engine. To
facilitate asynchronous packet sending or receiving (currently only chat), a
thread pool of 16 threads is kept handy. == Plugin incompatibilities As a
side effect of this change, plugins which rely on very specific
implementation level details within Minecraft are broken. At this point in
time, TagAPI and ProtocolLib are affected. If you are a user of ProtocolLib
you are advised to update to the latest build, where full support is enabled.
If you are a user of TagAPI, support has not yet been added, so you will need
to install the updated ProtocolLib so that TagAPI may use its functions. ==
Stability The code within this commit has been very lightly tested in
production (300 players for approximately 24 hours), however it is not
guaranteed to be free from all bugs. If you experence weird connection
behaviour, reporting the bug and steps to reproduce are advised. You are also
free to downgrade to the latest recommend build, which is guaranteed to be
stable. == Summary This commit provides a reduction in threads, which gives
the CPU / operating system more time to allocate to the main server threads,
as well as various other side benefits such as chat thread pooling and a
slight reduction in latency. This commit is licensed under the Creative
Commons Attribution-ShareAlike 3.0 Unported license.
diff --git a/pom.xml b/pom.xml diff --git a/pom.xml b/pom.xml
index da1a0eb..b8c24af 100644 index da1a0eb..b8c24af 100644
@ -134,7 +161,7 @@ index 9f8afe3..b1d3a17 100644
}; };
// CraftBukkit end // CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index eb474f5..71e4739 100644 index eb474f5..836ad94 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java --- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -17,7 +17,7 @@ public class PendingConnection extends Connection { @@ -17,7 +17,7 @@ public class PendingConnection extends Connection {
@ -180,7 +207,7 @@ index eb474f5..71e4739 100644
- ((DedicatedServerConnection) this.server.ae()).a(inetaddress); - ((DedicatedServerConnection) this.server.ae()).a(inetaddress);
+ // Spigot start + // Spigot start
+ if (inetaddress != null) { + if (inetaddress != null) {
+ ((org.spigotmc.MultiplexingServerConnection) this.server.ae()).throttle(inetaddress); + ((org.spigotmc.MultiplexingServerConnection) this.server.ae()).unThrottle(inetaddress);
} }
+ // Spigot end + // Spigot end
@ -258,7 +285,7 @@ index 84dcfcc..a30f217 100644
private static final int RECENT_TICKS; private static final int RECENT_TICKS;
diff --git a/src/main/java/org/spigotmc/MultiplexingServerConnection.java b/src/main/java/org/spigotmc/MultiplexingServerConnection.java diff --git a/src/main/java/org/spigotmc/MultiplexingServerConnection.java b/src/main/java/org/spigotmc/MultiplexingServerConnection.java
new file mode 100644 new file mode 100644
index 0000000..7dc2533 index 0000000..6e5de56
--- /dev/null --- /dev/null
+++ b/src/main/java/org/spigotmc/MultiplexingServerConnection.java +++ b/src/main/java/org/spigotmc/MultiplexingServerConnection.java
@@ -0,0 +1,126 @@ @@ -0,0 +1,126 @@
@ -356,7 +383,7 @@ index 0000000..7dc2533
+ * + *
+ * @param address the address to remove + * @param address the address to remove
+ */ + */
+ public void a(InetAddress address) { + public void unThrottle(InetAddress address) {
+ if (address != null) { + if (address != null) {
+ synchronized (throttle) { + synchronized (throttle) {
+ throttle.remove(address); + throttle.remove(address);

View File

@ -1,4 +1,4 @@
From bdb32d91ed3c63d9592aab483640c795828e8a6b Mon Sep 17 00:00:00 2001 From 7c45fcce863877c76d52a4878aa9ccacc37b24b9 Mon Sep 17 00:00:00 2001
From: Benjamin James Harrison-Sims <tehrainbowguy@gmail.com> From: Benjamin James Harrison-Sims <tehrainbowguy@gmail.com>
Date: Sun, 14 Apr 2013 21:19:57 +0500 Date: Sun, 14 Apr 2013 21:19:57 +0500
Subject: [PATCH] Prevent handshake spam from invalid names. Subject: [PATCH] Prevent handshake spam from invalid names.
@ -25,7 +25,7 @@ index 343af93..aa6609b 100644
public void a(DataOutputStream dataoutputstream) throws IOException { // CraftBukkit - throws IOException public void a(DataOutputStream dataoutputstream) throws IOException { // CraftBukkit - throws IOException
diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java
index 504bd8b..ff28a99 100644 index 504bd8b..2bb9664 100644
--- a/src/main/java/org/bukkit/craftbukkit/Spigot.java --- a/src/main/java/org/bukkit/craftbukkit/Spigot.java
+++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java +++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java
@@ -9,6 +9,8 @@ import org.bukkit.configuration.file.YamlConfiguration; @@ -9,6 +9,8 @@ import org.bukkit.configuration.file.YamlConfiguration;
@ -41,7 +41,7 @@ index 504bd8b..ff28a99 100644
private static Metrics metrics; private static Metrics metrics;
public static List<String> bungeeIPs; public static List<String> bungeeIPs;
public static int textureResolution = 16; public static int textureResolution = 16;
+ public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_]{2,16}$"); + public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_-]{2,16}$");
public static void initialize(CraftServer server, SimpleCommandMap commandMap, YamlConfiguration configuration) { public static void initialize(CraftServer server, SimpleCommandMap commandMap, YamlConfiguration configuration) {
commandMap.register("bukkit", new org.bukkit.craftbukkit.command.TicksPerSecondCommand("tps")); commandMap.register("bukkit", new org.bukkit.craftbukkit.command.TicksPerSecondCommand("tps"));

View File

@ -1,4 +1,4 @@
From ee9246854da8fff0ec2a98c4e3263334325c0a52 Mon Sep 17 00:00:00 2001 From 4499dfd50e9bf1272980f4ca537b4c507e55fe28 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au> From: md_5 <md_5@live.com.au>
Date: Fri, 19 Apr 2013 19:13:42 +1000 Date: Fri, 19 Apr 2013 19:13:42 +1000
Subject: [PATCH] Snapshot Protocol Subject: [PATCH] Snapshot Protocol
@ -316,7 +316,7 @@ index 0000000..bbfbb88
+ } + }
+} +}
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index 27cf4e3..adc3509 100644 index 72fb172..9e5035a 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java --- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -77,8 +77,8 @@ public class PendingConnection extends Connection { @@ -77,8 +77,8 @@ public class PendingConnection extends Connection {
@ -340,13 +340,13 @@ index 27cf4e3..adc3509 100644
for (Object object : list) { for (Object object : list) {
if (s == null) { if (s == null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java
index ff28a99..99e8aa8 100644 index 2bb9664..8a513a6 100644
--- a/src/main/java/org/bukkit/craftbukkit/Spigot.java --- a/src/main/java/org/bukkit/craftbukkit/Spigot.java
+++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java +++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java
@@ -28,6 +28,9 @@ public class Spigot { @@ -28,6 +28,9 @@ public class Spigot {
public static List<String> bungeeIPs; public static List<String> bungeeIPs;
public static int textureResolution = 16; public static int textureResolution = 16;
public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_]{2,16}$"); public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_-]{2,16}$");
+ public static boolean snapshotSupport; + public static boolean snapshotSupport;
+ public static int snapshotProtocolVersion = 62; + public static int snapshotProtocolVersion = 62;
+ public static String snapshotVersion = "13w16a"; + public static String snapshotVersion = "13w16a";