Fix parsing of portless IPv6 spring.rabbitmq.addresses

Closes gh-28133
This commit is contained in:
Andy Wilkinson 2021-10-01 11:30:11 +01:00
parent 218bed1f8e
commit a73293350a
2 changed files with 13 additions and 5 deletions

View File

@ -1083,14 +1083,15 @@ public class RabbitProperties {
}
private void parseHostAndPort(String input, boolean sslEnabled) {
int portIndex = input.lastIndexOf(':');
if (portIndex == -1) {
int bracketIndex = input.lastIndexOf(']');
int colonIndex = input.lastIndexOf(':');
if (colonIndex == -1 || colonIndex < bracketIndex) {
this.host = input;
this.port = (determineSslEnabled(sslEnabled)) ? DEFAULT_PORT_SECURE : DEFAULT_PORT;
}
else {
this.host = input.substring(0, portIndex);
this.port = Integer.parseInt(input.substring(portIndex + 1));
this.host = input.substring(0, colonIndex);
this.port = Integer.parseInt(input.substring(colonIndex + 1));
}
}

View File

@ -242,7 +242,14 @@ class RabbitPropertiesTests {
@Test
void ipv6Address() {
this.properties.setAddresses("amqp://foo:bar@[aaaa:bbbb:cccc::d]:5672");
this.properties.setAddresses("amqp://foo:bar@[aaaa:bbbb:cccc::d]:1234");
assertThat(this.properties.determineHost()).isEqualTo("[aaaa:bbbb:cccc::d]");
assertThat(this.properties.determinePort()).isEqualTo(1234);
}
@Test
void ipv6AddressDefaultPort() {
this.properties.setAddresses("amqp://foo:bar@[aaaa:bbbb:cccc::d]");
assertThat(this.properties.determineHost()).isEqualTo("[aaaa:bbbb:cccc::d]");
assertThat(this.properties.determinePort()).isEqualTo(5672);
}