From 7272577fe651a20618cf428475e2e57976c9599d Mon Sep 17 00:00:00 2001 From: obscuren Date: Thu, 7 Aug 2014 15:11:54 +0200 Subject: [PATCH] Added dns lookup --- ethpipe/config.go | 5 +++++ ethpub/pub.go | 13 +++++++++++++ peer.go | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ethpipe/config.go b/ethpipe/config.go index 5e57416d7..66708b26e 100644 --- a/ethpipe/config.go +++ b/ethpipe/config.go @@ -15,6 +15,11 @@ func (self *Config) Get(name string) *Object { switch name { case "NameReg": addr = []byte{0} + case "DomainReg": + objectAddr := configCtrl.GetStorage(ethutil.BigD([]byte{0})) + domainAddr := (&Object{self.pipe.World().safeGet(objectAddr.Bytes())}).StorageString("DomainReg").Bytes() + + return &Object{self.pipe.World().safeGet(domainAddr)} default: addr = ethutil.RightPadBytes([]byte(name), 32) } diff --git a/ethpub/pub.go b/ethpub/pub.go index f971313d8..3fb4c4920 100644 --- a/ethpub/pub.go +++ b/ethpub/pub.go @@ -10,6 +10,7 @@ import ( "github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethcrypto" "github.com/ethereum/eth-go/ethlog" + "github.com/ethereum/eth-go/ethpipe" "github.com/ethereum/eth-go/ethstate" "github.com/ethereum/eth-go/ethutil" ) @@ -41,6 +42,7 @@ func (self helper) NameReg() *ethstate.StateObject { return nil } +// TODO Re-write / refactor type PEthereum struct { manager ethchain.EthManager stateManager *ethchain.StateManager @@ -65,6 +67,17 @@ func New(manager ethchain.EthManager) *PEthereum { } } +func (self *PEthereum) LookupDomain(domain string) string { + pipe := ethpipe.New(self.manager) + world := pipe.World() + + if len(domain) > 32 { + domain = string(ethcrypto.Sha3Bin([]byte(domain))) + } + + return strings.Trim(world.Config().Get("DomainReg").StorageString(domain).Str(), "\x00") +} + func (lib *PEthereum) GetBlock(hexHash string) *PBlock { hash := ethutil.Hex2Bytes(hexHash) block := lib.blockChain.GetBlock(hash) diff --git a/peer.go b/peer.go index fa683e488..bd20bb2b9 100644 --- a/peer.go +++ b/peer.go @@ -449,7 +449,7 @@ func (p *Peer) HandleInbound() { peerlogger.Infof("Attempting to catch (%x). Parent unknown\n", b.Hash()) p.catchingUp = false - p.CatchupWithPeer(b.Hash()) + p.CatchupWithPeer(b.PrevHash) peerlogger.Infoln(b)