Allow srv resolving to be set per remote server (#4076)

* Allow srv resolving to be set per remote server

* Remove resolve-srv as a config option
This commit is contained in:
rtm516 2023-08-26 22:51:30 +01:00 committed by GitHub
parent 90c4ea78a7
commit 48ecde0f19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 8 deletions

View File

@ -67,4 +67,11 @@ public interface RemoteServer {
*/ */
@NonNull @NonNull
AuthType authType(); AuthType authType();
/**
* Gets if we should attempt to resolve the SRV record for this server.
*
* @return if we should attempt to resolve the SRV record for this server
*/
boolean resolveSrv();
} }

View File

@ -270,6 +270,11 @@ public abstract class GeyserJacksonConfiguration implements GeyserConfiguration
return authType; return authType;
} }
@Override
public boolean resolveSrv() {
return false;
}
@Getter @Getter
@JsonProperty("allow-password-authentication") @JsonProperty("allow-password-authentication")
private boolean passwordAuthentication = true; private boolean passwordAuthentication = true;

View File

@ -935,7 +935,15 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
} else { } else {
downstream = new TcpClientSession(this.remoteServer.address(), this.remoteServer.port(), this.protocol); downstream = new TcpClientSession(this.remoteServer.address(), this.remoteServer.port(), this.protocol);
this.downstream = new DownstreamSession(downstream); this.downstream = new DownstreamSession(downstream);
disableSrvResolving();
boolean resolveSrv = false;
try {
resolveSrv = this.remoteServer.resolveSrv();
} catch (AbstractMethodError | NoSuchMethodError ignored) {
// Ignore if the method doesn't exist
// This will happen with extensions using old APIs
}
this.downstream.getSession().setFlag(BuiltinFlags.ATTEMPT_SRV_RESOLVE, resolveSrv);
} }
if (geyser.getConfig().getRemote().isUseProxyProtocol()) { if (geyser.getConfig().getRemote().isUseProxyProtocol()) {
@ -1419,13 +1427,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
sendDownstreamPacket(swapHandsPacket); sendDownstreamPacket(swapHandsPacket);
} }
/**
* Will be overwritten for GeyserConnect.
*/
protected void disableSrvResolving() {
this.downstream.getSession().setFlag(BuiltinFlags.ATTEMPT_SRV_RESOLVE, false);
}
@Override @Override
public String name() { public String name() {
return null; return null;