~edwargix/tallyard

d2b1b9d17b17dbaadc20b58289c2a552d75c088c — David Florness 5 years ago c946148
Throw separate errors for connection failure and stream failure
1 files changed, 12 insertions(+), 10 deletions(-)

M voter.go
M voter.go => voter.go +12 -10
@@ 208,19 208,21 @@ func findPeers(closeElection <-chan int, election *Election, me *Me) {
			}
			fmt.Printf("found voter: %s\n", peer.ID)
			logger.Info("connecting to:", peer)

			err = me.Connect(me.ctx, peer)

			if err != nil {
				logger.Warn("couldn't connect to peer: ", err)
				continue
			}
			stream, err := me.NewStream(me.ctx, peer.ID, protocolID)
			if err == nil {
				writer := bufio.NewWriter(stream)
				writer.WriteString("shake")
				writer.Flush()
				stream.Close()
				election.remoteVoters[peer.ID] = &Voter{addrInfo: peer}
			} else {
				logger.Warning("connection failed:", err)
			if err != nil {
				logger.Warn("couldn't open stream with peer: ", err)
				continue
			}
			writer := bufio.NewWriter(stream)
			writer.WriteString("shake")
			writer.Flush()
			stream.Close()
			election.remoteVoters[peer.ID] = &Voter{addrInfo: peer}
		case numPeers = <-closeElection:
			if len(election.remoteVoters) > numPeers {
				logger.Fatalf("found more peers than master! %d > %d",