From b75be9bc98cc8c7bed56ad9a5b3c51fa4b85a613 Mon Sep 17 00:00:00 2001 From: garritfra Date: Sun, 23 Dec 2018 21:08:25 +0100 Subject: [PATCH] Update AddPeer Method --- core/Blockchain.go | 25 +++++++++++++++++++++++-- server/webserver.go | 5 ++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/core/Blockchain.go b/core/Blockchain.go index adc332e..2e6ac7a 100644 --- a/core/Blockchain.go +++ b/core/Blockchain.go @@ -2,6 +2,7 @@ package core import ( "log" + "net/http" "strings" "time" ) @@ -64,8 +65,28 @@ func (bc *Blockchain) GetLastHash() string { } // AddPeer appends the IP address to the list of peers known to the chain -func (bc *Blockchain) AddPeer(peer string) { - bc.Peers = append(bc.Peers, peer) +func (bc *Blockchain) AddPeer(peer string) (resp *http.Response, err error) { + resp, err = http.Get("http://" + peer) + + // Return Error, if an error occured + if err != nil { + return nil, err + } + + // Add Peer, if it is not already in the list + if !contains(bc.Peers, peer) { + bc.Peers = append(bc.Peers, peer) + } + return resp, nil +} + +func contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false } // IsValid checks, if the chain has any faulty blocks diff --git a/server/webserver.go b/server/webserver.go index a9de49a..eac4632 100644 --- a/server/webserver.go +++ b/server/webserver.go @@ -81,7 +81,10 @@ func handleAddPeers(w http.ResponseWriter, r *http.Request) { if err == nil { for _, peer := range receivedPeers { - blockchain.AddPeer(peer) + _, err := blockchain.AddPeer(peer) + if err != nil { + handleError(err, w, r) + } } } else { handleError(err, w, r)