aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-08-07 21:11:54 +0800
committerobscuren <geffobscura@gmail.com>2014-08-07 21:11:54 +0800
commit7272577fe651a20618cf428475e2e57976c9599d (patch)
treeb2255ddc9a361df1ba7c47652d551dba6a23089e
parentda50c751480da32036f41ccbeb1f292694ca0286 (diff)
downloaddexon-7272577fe651a20618cf428475e2e57976c9599d.tar.gz
dexon-7272577fe651a20618cf428475e2e57976c9599d.tar.zst
dexon-7272577fe651a20618cf428475e2e57976c9599d.zip
Added dns lookup
-rw-r--r--ethpipe/config.go5
-rw-r--r--ethpub/pub.go13
-rw-r--r--peer.go2
3 files changed, 19 insertions, 1 deletions
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)