mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-11-16 07:15:14 +01:00
ee819df91f
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing BungeeCord Changes: 6f7331e8 #3138, 3140: Check for the new leak detector netty flag 1b489bcc Attempt to fix java 8 native crash da27924a #3115, #3125: Update natives build script, switch to Cloudflare zlib 15b39887 #3133: Directly disconnect on illegal chars f9583a76 #3129: Replace ConnectTimeoutException with a more user-friendly string. cb738188 #3126: Use suppliers instead of reflection for native impl generation. a8b2f526 #3123: Apply exact vanilla string length limits for tab completion ad50fc9a #3111: Check chat for illegal chars & moved length check into the packet class
114 lines
5.8 KiB
Diff
114 lines
5.8 KiB
Diff
From c730e09faaa438333ef13935f08a44097f947562 Mon Sep 17 00:00:00 2001
|
|
From: Ichbinjoe <joe@ibj.io>
|
|
Date: Sat, 16 Jul 2016 20:44:01 -0400
|
|
Subject: [PATCH] Add timeout variant to connect methods
|
|
|
|
Also added more connect methods to ProxiedPlayer, in addition to the new method
|
|
|
|
diff --git a/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java b/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java
|
|
index 29a4716f..3dc32801 100644
|
|
--- a/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java
|
|
+++ b/api/src/main/java/net/md_5/bungee/api/connection/ProxiedPlayer.java
|
|
@@ -126,6 +126,38 @@ public interface ProxiedPlayer extends Connection, CommandSender
|
|
*/
|
|
void connect(ServerInfo target, Callback<Boolean> callback);
|
|
|
|
+ // Waterfall start
|
|
+ /**
|
|
+ * Connects / transfers this user to the specified connection, gracefully
|
|
+ * closing the current one. Depending on the implementation, this method
|
|
+ * might return before the user has been connected.
|
|
+ *
|
|
+ * @param target the new server to connect to
|
|
+ * @param callback the method called when the connection is complete, or
|
|
+ * when an exception is encountered. The boolean parameter denotes success
|
|
+ * or failure.
|
|
+ * @param retry whether to retry the connection if the initial connection
|
|
+ * fails.
|
|
+ */
|
|
+ void connect(ServerInfo target, Callback<Boolean> callback, boolean retry);
|
|
+
|
|
+ /**
|
|
+ * Connects / transfers this user to the specified connection, gracefully
|
|
+ * closing the current one. Depending on the implementation, this method
|
|
+ * might return before the user has been connected.
|
|
+ *
|
|
+ * @param target the new server to connect to
|
|
+ * @param callback the method called when the connection is complete, or
|
|
+ * when an exception is encountered. The boolean parameter denotes success
|
|
+ * or failure.
|
|
+ * @param retry whether to retry the connection if the initial connection
|
|
+ * fails.
|
|
+ * @param timeout timeout in milliseconds of the connection created to the
|
|
+ * target server
|
|
+ */
|
|
+ void connect(ServerInfo target, Callback<Boolean> callback, boolean retry, int timeout);
|
|
+ // Waterfall end
|
|
+
|
|
/**
|
|
* Connects / transfers this user to the specified connection, gracefully
|
|
* closing the current one. Depending on the implementation, this method
|
|
@@ -139,6 +171,25 @@ public interface ProxiedPlayer extends Connection, CommandSender
|
|
*/
|
|
void connect(ServerInfo target, Callback<Boolean> callback, ServerConnectEvent.Reason reason);
|
|
|
|
+ // Waterfall start
|
|
+ /**
|
|
+ * Connects / transfers this user to the specified connection, gracefully
|
|
+ * closing the current one. Depending on the implementation, this method
|
|
+ * might return before the user has been connected.
|
|
+ *
|
|
+ * @param target the new server to connect to
|
|
+ * @param callback the method called when the connection is complete, or
|
|
+ * when an exception is encountered. The boolean parameter denotes success
|
|
+ * or failure.
|
|
+ * @param retry whether to retry the connection if the initial connection
|
|
+ * fails.
|
|
+ * @param reason the reason for connecting to the new server
|
|
+ * @param timeout timeout in milliseconds of the connection created to the
|
|
+ * target server
|
|
+ */
|
|
+ void connect(ServerInfo target, Callback<Boolean> callback, boolean retry, ServerConnectEvent.Reason reason, int timeout);
|
|
+ // Waterfall end
|
|
+
|
|
/**
|
|
* Connects / transfers this user to the specified connection, gracefully
|
|
* closing the current one. Depending on the implementation, this method
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
|
|
index d4348eb7..a8f4378e 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
|
|
@@ -258,9 +258,20 @@ public final class UserConnection implements ProxiedPlayer
|
|
|
|
public void connect(ServerInfo info, final Callback<Boolean> callback, final boolean retry, ServerConnectEvent.Reason reason)
|
|
{
|
|
+ // Waterfall start
|
|
+ connect(info, callback, retry, reason, bungee.getConfig().getServerConnectTimeout());
|
|
+ }
|
|
+ public void connect(ServerInfo info, final Callback<Boolean> callback, final boolean retry, int timeout) {
|
|
+ connect(info, callback, retry, ServerConnectEvent.Reason.PLUGIN, timeout);
|
|
+ }
|
|
+
|
|
+ public void connect(ServerInfo info, final Callback<Boolean> callback, final boolean retry, ServerConnectEvent.Reason reason, final int timeout)
|
|
+ {
|
|
+ // Waterfall end
|
|
Preconditions.checkNotNull( info, "info" );
|
|
|
|
ServerConnectRequest.Builder builder = ServerConnectRequest.builder().retry( retry ).reason( reason ).target( info );
|
|
+ builder.connectTimeout(timeout); // Waterfall
|
|
if ( callback != null )
|
|
{
|
|
// Convert the Callback<Boolean> to be compatible with Callback<Result> from ServerConnectRequest.
|
|
@@ -354,7 +365,7 @@ public final class UserConnection implements ProxiedPlayer
|
|
if ( request.isRetry() && def != null && ( getServer() == null || def != getServer().getInfo() ) )
|
|
{
|
|
sendMessage( bungee.getTranslation( "fallback_lobby" ) );
|
|
- connect( def, null, true, ServerConnectEvent.Reason.LOBBY_FALLBACK );
|
|
+ connect( def, null, true, ServerConnectEvent.Reason.LOBBY_FALLBACK, request.getConnectTimeout() ); // Waterfall
|
|
} else if ( dimensionChange )
|
|
{
|
|
disconnect( bungee.getTranslation( "fallback_kick", connectionFailMessage( future.cause() ) ) );
|
|
--
|
|
2.30.1 (Apple Git-130)
|
|
|