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 // If we connect through an SRV record, there will be a period at the end (DNS usually elides
// this ending octet). // this ending octet).
if (cleaned.endsWith(".")) { if (!cleaned.isEmpty() && cleaned.charAt(cleaned.length() - 1) == '.') {
cleaned = cleaned.substring(0, cleaned.length() - 1); cleaned = cleaned.substring(0, cleaned.length() - 1);
} }
return cleaned; return cleaned;

View File

@@ -11,20 +11,32 @@ class HandshakeSessionHandlerTest {
@Test @Test
void cleanVhostHandlesGoodHostname() { void cleanVhostHandlesGoodHostname() {
assertEquals("localhost", cleanVhost("localhost")); assertEquals("localhost", cleanVhost("localhost"));
assertEquals("mc.example.com", cleanVhost("mc.example.com"));
} }
@Test @Test
void cleanVhostHandlesTrailingOctet() { void cleanVhostHandlesTrailingOctet() {
assertEquals("localhost", cleanVhost("localhost.")); assertEquals("localhost", cleanVhost("localhost."));
assertEquals("mc.example.com", cleanVhost("mc.example.com."));
} }
@Test @Test
void cleanVhostHandlesForge() { void cleanVhostHandlesForge() {
assertEquals("localhost", cleanVhost("localhost" + HANDSHAKE_HOSTNAME_TOKEN)); assertEquals("localhost", cleanVhost("localhost" + HANDSHAKE_HOSTNAME_TOKEN));
assertEquals("mc.example.com", cleanVhost("mc.example.com" + HANDSHAKE_HOSTNAME_TOKEN));
} }
@Test @Test
void cleanVhostHandlesOctetsAndForge() { void cleanVhostHandlesOctetsAndForge() {
assertEquals("localhost", cleanVhost("localhost." + HANDSHAKE_HOSTNAME_TOKEN)); 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));
} }
} }