Improve HandshakeSessionHandler#cleanVhost()

This commit is contained in:
Andrew Steinborn
2019-01-28 00:34:51 -05:00
parent 6eb6c99fa7
commit 7d4d81fff1
2 changed files with 13 additions and 1 deletions

View File

@@ -139,7 +139,7 @@ public class HandshakeSessionHandler implements MinecraftSessionHandler {
// If we connect through an SRV record, there will be a period at the end (DNS usually elides
// this ending octet).
if (cleaned.endsWith(".")) {
if (!cleaned.isEmpty() && cleaned.charAt(cleaned.length() - 1) == '.') {
cleaned = cleaned.substring(0, cleaned.length() - 1);
}
return cleaned;

View File

@@ -11,20 +11,32 @@ class HandshakeSessionHandlerTest {
@Test
void cleanVhostHandlesGoodHostname() {
assertEquals("localhost", cleanVhost("localhost"));
assertEquals("mc.example.com", cleanVhost("mc.example.com"));
}
@Test
void cleanVhostHandlesTrailingOctet() {
assertEquals("localhost", cleanVhost("localhost."));
assertEquals("mc.example.com", cleanVhost("mc.example.com."));
}
@Test
void cleanVhostHandlesForge() {
assertEquals("localhost", cleanVhost("localhost" + HANDSHAKE_HOSTNAME_TOKEN));
assertEquals("mc.example.com", cleanVhost("mc.example.com" + HANDSHAKE_HOSTNAME_TOKEN));
}
@Test
void cleanVhostHandlesOctetsAndForge() {
assertEquals("localhost", cleanVhost("localhost." + HANDSHAKE_HOSTNAME_TOKEN));
assertEquals("mc.example.com", cleanVhost("mc.example.com." + HANDSHAKE_HOSTNAME_TOKEN));
}
@Test
void cleanVhostHandlesEmptyHostnames() {
assertEquals("", cleanVhost(""));
assertEquals("", cleanVhost(HANDSHAKE_HOSTNAME_TOKEN));
assertEquals("", cleanVhost("."));
assertEquals("", cleanVhost("." + HANDSHAKE_HOSTNAME_TOKEN));
}
}