Skip to content

Commit

Permalink
Omit fallback controller if not specified
Browse files Browse the repository at this point in the history
  • Loading branch information
Eric-Warehime committed Jul 31, 2023
1 parent 40d4b94 commit 5838813
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 15 deletions.
4 changes: 1 addition & 3 deletions cmd/algons/dnsaddrCmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ import (

"github.com/spf13/cobra"

log "github.com/algorand/go-algorand/logging"
"github.com/algorand/go-algorand/network/p2p/dnsaddr"
"github.com/algorand/go-algorand/tools/network"
)

var (
Expand Down Expand Up @@ -54,7 +52,7 @@ var dnsaddrTreeCmd = &cobra.Command{
Short: "Recursively resolves and lists the dnsaddr entries of the given domain",
Long: "Recursively resolves and lists the dnsaddr entries of the given domain",
Run: func(cmd *cobra.Command, args []string) {
controller := dnsaddr.NewMultiaddrDNSResolveController(network.NewResolveController(secure, "", log.Base()))
controller := dnsaddr.NewMultiaddrDNSResolveController(secure, "")
addrs, err := dnsaddr.MultiaddrsFromResolver(dnsaddrDomain, controller)
if err != nil {
fmt.Printf("%s\n", err.Error())
Expand Down
10 changes: 8 additions & 2 deletions network/p2p/dnsaddr/resolveController.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package dnsaddr
import (
madns "github.com/multiformats/go-multiaddr-dns"

log "github.com/algorand/go-algorand/logging"
"github.com/algorand/go-algorand/tools/network"
)

Expand All @@ -30,10 +31,15 @@ type MultiaddrDNSResolveController struct {
}

// NewMultiaddrDNSResolveController constructs a MultiaddrDNSResolveController
func NewMultiaddrDNSResolveController(controller network.ResolveController) *MultiaddrDNSResolveController {
func NewMultiaddrDNSResolveController(secure bool, fallbackDNSResolverAddress string) *MultiaddrDNSResolveController {
controller := network.NewResolveController(secure, fallbackDNSResolverAddress, log.Base())
nextResolvers := []func() *madns.Resolver{controller.SystemDnsaddrResolver}
if fallbackDNSResolverAddress != "" {
nextResolvers = append(nextResolvers, controller.FallbackDnsaddrResolver)
}
return &MultiaddrDNSResolveController{
resolver: nil,
nextResolvers: []func() *madns.Resolver{controller.SystemDnsaddrResolver, controller.FallbackDnsaddrResolver, controller.DefaultDnsaddrResolver},
nextResolvers: append(nextResolvers, controller.DefaultDnsaddrResolver),
controller: controller,
}
}
Expand Down
15 changes: 8 additions & 7 deletions network/p2p/dnsaddr/resolveController_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,25 @@ import (

"github.com/stretchr/testify/assert"

log "github.com/algorand/go-algorand/logging"
"github.com/algorand/go-algorand/test/partitiontest"
"github.com/algorand/go-algorand/tools/network"
)

func TestDnsAddrResolveController(t *testing.T) {
partitiontest.PartitionTest(t)
t.Parallel()

controller := network.NewResolveController(true, "127.0.0.1", log.Base())
dnsaddrCont := NewMultiaddrDNSResolveController(controller)
dnsaddrCont := NewMultiaddrDNSResolveController(true, "127.0.0.1")

// Assert that the dnsaddr resolver cycles through the dns resolvers properly
assert.Equal(t, controller.SystemDnsaddrResolver(), dnsaddrCont.Resolver())
assert.Equal(t, controller.FallbackDnsaddrResolver(), dnsaddrCont.NextResolver())
assert.Equal(t, controller.DefaultDnsaddrResolver(), dnsaddrCont.NextResolver())
assert.Equal(t, dnsaddrCont.controller.SystemDnsaddrResolver(), dnsaddrCont.Resolver())
assert.Equal(t, dnsaddrCont.controller.FallbackDnsaddrResolver(), dnsaddrCont.NextResolver())
assert.Equal(t, dnsaddrCont.controller.DefaultDnsaddrResolver(), dnsaddrCont.NextResolver())
// It should return nil once all the resolvers have been tried
assert.Nil(t, dnsaddrCont.NextResolver())
assert.Nil(t, dnsaddrCont.NextResolver())

// It should not include fallback if none was specified
dnsaddrCont = NewMultiaddrDNSResolveController(true, "")
assert.Equal(t, 2, len(dnsaddrCont.nextResolvers))

}
4 changes: 1 addition & 3 deletions network/p2p/dnsaddr/resolve_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

log "github.com/algorand/go-algorand/logging"
"github.com/algorand/go-algorand/test/partitiontest"
"github.com/algorand/go-algorand/tools/network"
)
Expand Down Expand Up @@ -61,8 +60,7 @@ func TestMultiaddrsFromResolver(t *testing.T) {
partitiontest.PartitionTest(t)
t.Parallel()

controller := network.NewResolveController(false, "", log.Base())
dnsaddrCont := NewMultiaddrDNSResolveController(controller)
dnsaddrCont := NewMultiaddrDNSResolveController(false, "")

// Fail on bad dnsaddr domain
maddrs, err := MultiaddrsFromResolver("/bogus/foobar", dnsaddrCont)
Expand Down

0 comments on commit 5838813

Please sign in to comment.