aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ethereum.go16
1 files changed, 11 insertions, 5 deletions
diff --git a/ethereum.go b/ethereum.go
index 2500892f0..cc3f1695b 100644
--- a/ethereum.go
+++ b/ethereum.go
@@ -33,7 +33,7 @@ type Ethereum struct {
quit chan bool
// DB interface
//db *ethdb.LDBDatabase
- db *ethdb.MemDatabase
+ db ethutil.Database
// Block manager for processing new blocks and managing the block chain
BlockManager *ethchain.BlockManager
// The transaction pool. Transaction can be pushed on this pool
@@ -52,10 +52,14 @@ type Ethereum struct {
serverCaps Caps
nat NAT
+
+ // Specifies the desired amount of maximum peers
+ MaxPeers int
}
func New(caps Caps, usePnp bool) (*Ethereum, error) {
- db, err := ethdb.NewMemDatabase()
+ db, err := ethdb.NewLDBDatabase()
+ //db, err := ethdb.NewMemDatabase()
if err != nil {
return nil, err
}
@@ -79,6 +83,7 @@ func New(caps Caps, usePnp bool) (*Ethereum, error) {
Nonce: nonce,
serverCaps: caps,
nat: nat,
+ MaxPeers: 5,
}
ethereum.TxPool = ethchain.NewTxPool()
ethereum.TxPool.Speaker = ethereum
@@ -93,7 +98,7 @@ func New(caps Caps, usePnp bool) (*Ethereum, error) {
func (s *Ethereum) AddPeer(conn net.Conn) {
peer := NewPeer(conn, s, true)
- if peer != nil {
+ if peer != nil && s.peers.Len() < s.MaxPeers {
s.peers.PushBack(peer)
peer.Start()
}
@@ -263,9 +268,10 @@ func (s *Ethereum) Stop() {
close(s.quit)
- s.shutdownChan <- true
-
s.TxPool.Stop()
+ s.BlockManager.Stop()
+
+ s.shutdownChan <- true
}
// This function will wait for a shutdown and resumes main thread execution