Close #938 - re add our register channel manipulation

This commit is contained in:
md_5 2014-03-20 20:11:56 +11:00
parent a8584f81ed
commit 1bbbfdb0d5
3 changed files with 27 additions and 0 deletions

View File

@ -112,6 +112,11 @@ public class ServerConnector extends PacketHandler
} }
} }
for ( PluginMessage message : user.getPendingConnection().getRegisterMessages() )
{
ch.write( message );
}
if ( user.getSettings() != null ) if ( user.getSettings() != null )
{ {
ch.write( user.getSettings() ); ch.write( user.getSettings() );

View File

@ -6,6 +6,8 @@ import java.math.BigInteger;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import javax.crypto.SecretKey; import javax.crypto.SecretKey;
import lombok.Getter; import lombok.Getter;
@ -34,6 +36,7 @@ import net.md_5.bungee.netty.cipher.CipherDecoder;
import net.md_5.bungee.netty.cipher.CipherEncoder; import net.md_5.bungee.netty.cipher.CipherEncoder;
import net.md_5.bungee.protocol.DefinedPacket; import net.md_5.bungee.protocol.DefinedPacket;
import net.md_5.bungee.protocol.packet.Handshake; import net.md_5.bungee.protocol.packet.Handshake;
import net.md_5.bungee.protocol.packet.PluginMessage;
import net.md_5.bungee.protocol.packet.EncryptionResponse; import net.md_5.bungee.protocol.packet.EncryptionResponse;
import net.md_5.bungee.protocol.packet.EncryptionRequest; import net.md_5.bungee.protocol.packet.EncryptionRequest;
import net.md_5.bungee.protocol.packet.Kick; import net.md_5.bungee.protocol.packet.Kick;
@ -62,6 +65,8 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@Getter @Getter
private LoginRequest loginRequest; private LoginRequest loginRequest;
private EncryptionRequest request; private EncryptionRequest request;
@Getter
private final List<PluginMessage> registerMessages = new ArrayList<>();
private State thisState = State.HANDSHAKE; private State thisState = State.HANDSHAKE;
private final Unsafe unsafe = new Unsafe() private final Unsafe unsafe = new Unsafe()
{ {
@ -96,6 +101,17 @@ public class InitialHandler extends PacketHandler implements PendingConnection
disconnect( ChatColor.RED + Util.exception( t ) ); disconnect( ChatColor.RED + Util.exception( t ) );
} }
@Override
public void handle(PluginMessage pluginMessage) throws Exception
{
// TODO: Unregister?
if ( pluginMessage.getTag().equals( "REGISTER" ) )
{
Preconditions.checkState( registerMessages.size() < 128, "Too many channels registered" );
registerMessages.add( pluginMessage );
}
}
@Override @Override
public void handle(LegacyHandshake legacyHandshake) throws Exception public void handle(LegacyHandshake legacyHandshake) throws Exception
{ {

View File

@ -147,6 +147,12 @@ public class UpstreamBridge extends PacketHandler
{ {
throw CancelSendSignal.INSTANCE; throw CancelSendSignal.INSTANCE;
} }
// TODO: Unregister as well?
if ( pluginMessage.getTag().equals( "REGISTER" ) )
{
con.getPendingConnection().getRegisterMessages().add( pluginMessage );
}
} }
@Override @Override