Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-16 21:10:30 +01:00
Merge pull request #338 from xxDark/read-timeout
Make initial read timeout configurable
Dieser Commit ist enthalten in:
Commit
c0af5668b9
@ -150,4 +150,11 @@ public interface ProxyConfig {
|
|||||||
* @return read timeout (in milliseconds)
|
* @return read timeout (in milliseconds)
|
||||||
*/
|
*/
|
||||||
int getReadTimeout();
|
int getReadTimeout();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get how long this proxy will wait until performing an initial read timeout.
|
||||||
|
*
|
||||||
|
* @return read timeout (in milliseconds)
|
||||||
|
*/
|
||||||
|
int getInitialReadTimeout();
|
||||||
}
|
}
|
||||||
|
@ -318,6 +318,11 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
return advanced.getReadTimeout();
|
return advanced.getReadTimeout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getInitialReadTimeout() {
|
||||||
|
return advanced.getInitialReadTimeout();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isProxyProtocol() {
|
public boolean isProxyProtocol() {
|
||||||
return advanced.isProxyProtocol();
|
return advanced.isProxyProtocol();
|
||||||
}
|
}
|
||||||
@ -592,6 +597,7 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
private boolean failoverOnUnexpectedServerDisconnect = true;
|
private boolean failoverOnUnexpectedServerDisconnect = true;
|
||||||
private boolean announceProxyCommands = true;
|
private boolean announceProxyCommands = true;
|
||||||
private boolean logCommandExecutions = false;
|
private boolean logCommandExecutions = false;
|
||||||
|
private int initialReadTimeout = 3000;
|
||||||
|
|
||||||
private Advanced() {
|
private Advanced() {
|
||||||
}
|
}
|
||||||
@ -611,6 +617,7 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
.getOrElse("failover-on-unexpected-server-disconnect", true);
|
.getOrElse("failover-on-unexpected-server-disconnect", true);
|
||||||
this.announceProxyCommands = config.getOrElse("announce-proxy-commands", true);
|
this.announceProxyCommands = config.getOrElse("announce-proxy-commands", true);
|
||||||
this.logCommandExecutions = config.getOrElse("log-command-executions", false);
|
this.logCommandExecutions = config.getOrElse("log-command-executions", false);
|
||||||
|
this.initialReadTimeout = config.getIntOrElse("initial-read-timeout", 3000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -662,6 +669,10 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
return logCommandExecutions;
|
return logCommandExecutions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getInitialReadTimeout() {
|
||||||
|
return initialReadTimeout;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Advanced{"
|
return "Advanced{"
|
||||||
|
@ -25,6 +25,7 @@ import com.velocitypowered.proxy.config.PlayerInfoForwarding;
|
|||||||
import com.velocitypowered.proxy.config.VelocityConfiguration;
|
import com.velocitypowered.proxy.config.VelocityConfiguration;
|
||||||
import com.velocitypowered.proxy.connection.MinecraftConnection;
|
import com.velocitypowered.proxy.connection.MinecraftConnection;
|
||||||
import com.velocitypowered.proxy.connection.MinecraftSessionHandler;
|
import com.velocitypowered.proxy.connection.MinecraftSessionHandler;
|
||||||
|
import com.velocitypowered.proxy.network.Connections;
|
||||||
import com.velocitypowered.proxy.protocol.StateRegistry;
|
import com.velocitypowered.proxy.protocol.StateRegistry;
|
||||||
import com.velocitypowered.proxy.protocol.packet.Disconnect;
|
import com.velocitypowered.proxy.protocol.packet.Disconnect;
|
||||||
import com.velocitypowered.proxy.protocol.packet.EncryptionRequest;
|
import com.velocitypowered.proxy.protocol.packet.EncryptionRequest;
|
||||||
@ -34,6 +35,7 @@ import com.velocitypowered.proxy.protocol.packet.ServerLoginSuccess;
|
|||||||
import com.velocitypowered.proxy.protocol.packet.SetCompression;
|
import com.velocitypowered.proxy.protocol.packet.SetCompression;
|
||||||
import com.velocitypowered.proxy.util.VelocityMessages;
|
import com.velocitypowered.proxy.util.VelocityMessages;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import io.netty.handler.timeout.ReadTimeoutHandler;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.security.GeneralSecurityException;
|
import java.security.GeneralSecurityException;
|
||||||
import java.security.KeyPair;
|
import java.security.KeyPair;
|
||||||
@ -43,6 +45,7 @@ import java.util.UUID;
|
|||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -198,6 +201,12 @@ public class LoginSessionHandler implements MinecraftSessionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initializePlayer(GameProfile profile, boolean onlineMode) {
|
private void initializePlayer(GameProfile profile, boolean onlineMode) {
|
||||||
|
// Restore normal timeout for connection.
|
||||||
|
mcConnection.getChannel().pipeline()
|
||||||
|
.replace(Connections.READ_TIMEOUT, Connections.READ_TIMEOUT,
|
||||||
|
new ReadTimeoutHandler(server.getConfiguration().getReadTimeout(),
|
||||||
|
TimeUnit.MILLISECONDS));
|
||||||
|
|
||||||
// Some connection types may need to alter the game profile.
|
// Some connection types may need to alter the game profile.
|
||||||
profile = mcConnection.getType().addGameProfileTokensIfRequired(profile,
|
profile = mcConnection.getType().addGameProfileTokensIfRequired(profile,
|
||||||
server.getConfiguration().getPlayerInfoForwardingMode());
|
server.getConfiguration().getPlayerInfoForwardingMode());
|
||||||
|
@ -37,7 +37,7 @@ public class ServerChannelInitializer extends ChannelInitializer<Channel> {
|
|||||||
protected void initChannel(final Channel ch) {
|
protected void initChannel(final Channel ch) {
|
||||||
ch.pipeline()
|
ch.pipeline()
|
||||||
.addLast(READ_TIMEOUT,
|
.addLast(READ_TIMEOUT,
|
||||||
new ReadTimeoutHandler(this.server.getConfiguration().getReadTimeout(),
|
new ReadTimeoutHandler(this.server.getConfiguration().getInitialReadTimeout(),
|
||||||
TimeUnit.MILLISECONDS))
|
TimeUnit.MILLISECONDS))
|
||||||
.addLast(LEGACY_PING_DECODER, new LegacyPingDecoder())
|
.addLast(LEGACY_PING_DECODER, new LegacyPingDecoder())
|
||||||
.addLast(FRAME_DECODER, new MinecraftVarintFrameDecoder())
|
.addLast(FRAME_DECODER, new MinecraftVarintFrameDecoder())
|
||||||
|
@ -105,6 +105,9 @@ connection-timeout = 5000
|
|||||||
# Specify a read timeout for connections here. The default is 30 seconds.
|
# Specify a read timeout for connections here. The default is 30 seconds.
|
||||||
read-timeout = 30000
|
read-timeout = 30000
|
||||||
|
|
||||||
|
# Specify an initial read timeout for connections here. The default is 3 seconds.
|
||||||
|
initial-read-timeout = 3000
|
||||||
|
|
||||||
# Enables compatibility with HAProxy.
|
# Enables compatibility with HAProxy.
|
||||||
proxy-protocol = false
|
proxy-protocol = false
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren