From bef46b0d6ba279c055d8aaefce4fc5020a05b571 Mon Sep 17 00:00:00 2001 From: "Daniel A. Nagy" Date: Thu, 12 Feb 2015 17:42:43 +0100 Subject: [PATCH 1/4] Error handling and hard-coded peer. --- bzz/protocol.go | 3 +++ eth/backend.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/bzz/protocol.go b/bzz/protocol.go index d29ffa808c..d731beb2fa 100644 --- a/bzz/protocol.go +++ b/bzz/protocol.go @@ -209,6 +209,9 @@ func (self *bzzProtocol) handle() error { return self.protoError(ErrDecode, "->msg %v: %v", msg, err) } dpaLogger.Warnf("Request message: %#v", req) + if req.Key == nil { + return self.protoError(ErrDecode, "protocol handler: req.Key == nil") + } req.peer = peer{bzzProtocol: self} self.netStore.addRetrieveRequest(&req) diff --git a/eth/backend.go b/eth/backend.go index 0e51f3a277..a03aaabacc 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -19,7 +19,7 @@ import ( ) const ( - seedNodeAddress = "10.0.1.41:30303" + seedNodeAddress = "10.0.2.41:30303" ) type Config struct { From c2037241324519bec5526b16ca3657d4969ad08d Mon Sep 17 00:00:00 2001 From: "Daniel A. Nagy" Date: Thu, 12 Feb 2015 17:50:59 +0100 Subject: [PATCH 2/4] Guard against malformed requests --- bzz/protocol.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bzz/protocol.go b/bzz/protocol.go index d731beb2fa..a8fc20a0c4 100644 --- a/bzz/protocol.go +++ b/bzz/protocol.go @@ -209,7 +209,7 @@ func (self *bzzProtocol) handle() error { return self.protoError(ErrDecode, "->msg %v: %v", msg, err) } dpaLogger.Warnf("Request message: %#v", req) - if req.Key == nil { + if req.Key == nil || req.Timeout == nil { return self.protoError(ErrDecode, "protocol handler: req.Key == nil") } req.peer = peer{bzzProtocol: self} From f9efeb6594f0efb90b2101b298dda4cb21c3ef95 Mon Sep 17 00:00:00 2001 From: zelig Date: Thu, 12 Feb 2015 17:52:05 +0100 Subject: [PATCH 3/4] add peers cli flag --- cmd/ethereum/flags.go | 2 ++ cmd/ethereum/main.go | 2 +- cmd/utils/cmd.go | 4 ++-- eth/backend.go | 10 ++++++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cmd/ethereum/flags.go b/cmd/ethereum/flags.go index f829744dc9..d69ea5cfb6 100644 --- a/cmd/ethereum/flags.go +++ b/cmd/ethereum/flags.go @@ -65,6 +65,7 @@ var ( SHH bool Dial bool PrintVersion bool + Peers string ) // flags specific to cli client @@ -103,6 +104,7 @@ func Init() { flag.BoolVar(&SHH, "shh", true, "whisper protocol (on)") flag.BoolVar(&Dial, "dial", true, "dial out connections (on)") flag.BoolVar(&GenAddr, "genaddr", false, "create a new priv/pub key") + flag.StringVar(&Peers, "peers", "", "imports the file given (hex or mnemonic formats)") flag.StringVar(&SecretFile, "import", "", "imports the file given (hex or mnemonic formats)") flag.StringVar(&ExportDir, "export", "", "exports the session keyring to files in the directory given") flag.StringVar(&LogFile, "logfile", "", "log file (defaults to standard output)") diff --git a/cmd/ethereum/main.go b/cmd/ethereum/main.go index b816c678e7..ea53b9a304 100644 --- a/cmd/ethereum/main.go +++ b/cmd/ethereum/main.go @@ -134,7 +134,7 @@ func main() { utils.StartWebSockets(ethereum) } - utils.StartEthereum(ethereum, UseSeed) + utils.StartEthereum(ethereum, UseSeed, Peers) if StartJsConsole { InitJsConsole(ethereum) diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index a57d3266f1..06e3fb93f1 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -120,9 +120,9 @@ func exit(err error) { os.Exit(status) } -func StartEthereum(ethereum *eth.Ethereum, UseSeed bool) { +func StartEthereum(ethereum *eth.Ethereum, UseSeed bool, Peers string) { clilogger.Infof("Starting %s", ethereum.ClientIdentity()) - err := ethereum.Start(UseSeed) + err := ethereum.Start(UseSeed, Peers) if err != nil { exit(err) } diff --git a/eth/backend.go b/eth/backend.go index a03aaabacc..db8a246055 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -19,7 +19,7 @@ import ( ) const ( - seedNodeAddress = "10.0.2.41:30303" + seedNodeAddress = "10.0.1.41:30303" ) type Config struct { @@ -233,7 +233,7 @@ func (s *Ethereum) MaxPeers() int { } // Start the ethereum -func (s *Ethereum) Start(seed bool) error { +func (s *Ethereum) Start(seed bool, p string) error { err := s.net.Start() if err != nil { return err @@ -255,6 +255,12 @@ func (s *Ethereum) Start(seed bool) error { s.blockSub = s.eventMux.Subscribe(core.NewMinedBlockEvent{}) go s.blockBroadcastLoop() + if len(p) > 0 { + if err := s.SuggestPeer(p); err != nil { + return err + } + } + // TODO: read peers here if seed { logger.Infof("Connect to seed node %v", seedNodeAddress) From cb18316315f640f4fca8534d01dcf967572a57cf Mon Sep 17 00:00:00 2001 From: "Daniel A. Nagy" Date: Thu, 12 Feb 2015 17:52:15 +0100 Subject: [PATCH 4/4] Proper error message --- bzz/protocol.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bzz/protocol.go b/bzz/protocol.go index a8fc20a0c4..ed3b14603f 100644 --- a/bzz/protocol.go +++ b/bzz/protocol.go @@ -210,7 +210,7 @@ func (self *bzzProtocol) handle() error { } dpaLogger.Warnf("Request message: %#v", req) if req.Key == nil || req.Timeout == nil { - return self.protoError(ErrDecode, "protocol handler: req.Key == nil") + return self.protoError(ErrDecode, "protocol handler: req.Key == nil || req.Timeout == nil") } req.peer = peer{bzzProtocol: self} self.netStore.addRetrieveRequest(&req)