diff --git a/lib/synapse/service_watcher/dns.rb b/lib/synapse/service_watcher/dns.rb index d59c6971..a5716922 100644 --- a/lib/synapse/service_watcher/dns.rb +++ b/lib/synapse/service_watcher/dns.rb @@ -63,7 +63,8 @@ def resolve_servers resolver.tap do |dns| resolution = discovery_servers.map do |server| addresses = dns.getaddresses(server['host']).map(&:to_s) - [server, addresses.sort] + port = dns.getresource(server['srv'],Resolv::DNS::Resource::IN::SRV).port if server['srv'] + [server, addresses.sort, port] end return resolution @@ -79,11 +80,12 @@ def resolver end def configure_backends(servers) - new_backends = servers.flat_map do |(server, addresses)| + new_backends = servers.flat_map do |(server, addresses, port)| + custom_port = port || server['port'] addresses.map do |address| { 'host' => address, - 'port' => server['port'], + 'port' => custom_port, 'name' => server['name'], } end