From 6def110c37d4d43402c4b658ce6b291400f840e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
Date: Fri, 24 Apr 2015 11:19:33 +0300
Subject: cmd/bootnode, eth, p2p, p2p/discover: clean up the seeder and mesh
 into eth.

---
 eth/backend.go | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

(limited to 'eth')

diff --git a/eth/backend.go b/eth/backend.go
index 382cfc832..039f730f1 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -125,6 +125,8 @@ type Ethereum struct {
 	blockDb common.Database // Block chain database
 	stateDb common.Database // State changes database
 	extraDb common.Database // Extra database (txs, etc)
+	seedDb  *discover.Cache // Peer database seeding the bootstrap
+
 	// Closed when databases are flushed and closed
 	databasesClosed chan bool
 
@@ -179,7 +181,10 @@ func New(config *Config) (*Ethereum, error) {
 	if err != nil {
 		return nil, err
 	}
-	seedDbPath := path.Join(config.DataDir, "seeds")
+	seedDb, err := discover.NewPersistentCache(path.Join(config.DataDir, "seeds"))
+	if err != nil {
+		return nil, err
+	}
 
 	// Perform database sanity checks
 	d, _ := blockDb.Get([]byte("ProtocolVersion"))
@@ -207,6 +212,7 @@ func New(config *Config) (*Ethereum, error) {
 		blockDb:         blockDb,
 		stateDb:         stateDb,
 		extraDb:         extraDb,
+		seedDb:          seedDb,
 		eventMux:        &event.TypeMux{},
 		accountManager:  config.AccountManager,
 		DataDir:         config.DataDir,
@@ -244,7 +250,7 @@ func New(config *Config) (*Ethereum, error) {
 		NAT:            config.NAT,
 		NoDial:         !config.Dial,
 		BootstrapNodes: config.parseBootNodes(),
-		SeedCache:      seedDbPath,
+		SeedCache:      seedDb,
 	}
 	if len(config.Port) > 0 {
 		eth.net.ListenAddr = ":" + config.Port
@@ -423,6 +429,7 @@ done:
 		}
 	}
 
+	s.seedDb.Close()
 	s.blockDb.Close()
 	s.stateDb.Close()
 	s.extraDb.Close()
@@ -450,7 +457,7 @@ func (self *Ethereum) SuggestPeer(nodeURL string) error {
 }
 
 func (s *Ethereum) Stop() {
-	s.txSub.Unsubscribe()         // quits txBroadcastLoop
+	s.txSub.Unsubscribe() // quits txBroadcastLoop
 
 	s.protocolManager.Stop()
 	s.txPool.Stop()
-- 
cgit v1.2.3