Skip to content
This repository has been archived by the owner on Aug 2, 2021. It is now read-only.

Commit

Permalink
Merge pull request #16250 from gluk256/317-fatalf
Browse files Browse the repository at this point in the history
whisper: refactoring go-routines workflow

Move the call mailServer.Init() down (to the bottom of the function) because if the function initialize() completes successfully, then it will be followed by mailServer.Close() in shutdown(). The workflow of the corresponding goroutines is clearer now.
  • Loading branch information
gballet authored Mar 5, 2018
2 parents d429a92 + 61a061c commit abed63c
Showing 1 changed file with 32 additions and 24 deletions.
56 changes: 32 additions & 24 deletions cmd/wnode/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ func main() {
processArgs()
initialize()
run()
shutdown()
}

func processArgs() {
Expand Down Expand Up @@ -209,21 +210,6 @@ func initialize() {
MinimumAcceptedPOW: *argPoW,
}

if *mailServerMode {
if len(msPassword) == 0 {
msPassword, err = console.Stdin.PromptPassword("Please enter the Mail Server password: ")
if err != nil {
utils.Fatalf("Failed to read Mail Server password: %s", err)
}
}

shh = whisper.New(cfg)
shh.RegisterServer(&mailServer)
mailServer.Init(shh, *argDBPath, msPassword, *argServerPoW)
} else {
shh = whisper.New(cfg)
}

if *argPoW != whisper.DefaultMinimumPoW {
err := shh.SetMinimumPoW(*argPoW)
if err != nil {
Expand Down Expand Up @@ -265,6 +251,26 @@ func initialize() {
maxPeers = 800
}

_, err = crand.Read(entropy[:])
if err != nil {
utils.Fatalf("crypto/rand failed: %s", err)
}

if *mailServerMode {
if len(msPassword) == 0 {
msPassword, err = console.Stdin.PromptPassword("Please enter the Mail Server password: ")
if err != nil {
utils.Fatalf("Failed to read Mail Server password: %s", err)
}
}

shh = whisper.New(cfg)
shh.RegisterServer(&mailServer)
mailServer.Init(shh, *argDBPath, msPassword, *argServerPoW)
} else {
shh = whisper.New(cfg)
}

server = &p2p.Server{
Config: p2p.Config{
PrivateKey: nodeid,
Expand All @@ -278,17 +284,13 @@ func initialize() {
TrustedNodes: peers,
},
}

_, err = crand.Read(entropy[:])
if err != nil {
utils.Fatalf("crypto/rand failed: %s", err)
}
}

func startServer() {
func startServer() error {
err := server.Start()
if err != nil {
utils.Fatalf("Failed to start Whisper peer: %s.", err)
fmt.Printf("Failed to start Whisper peer: %s.", err)
return err
}

fmt.Printf("my public key: %s \n", common.ToHex(crypto.FromECDSAPub(&asymKey.PublicKey)))
Expand All @@ -307,6 +309,7 @@ func startServer() {
if !*forwarderMode {
fmt.Printf("Please type the message. To quit type: '%s'\n", quitCommand)
}
return nil
}

func isKeyValid(k *ecdsa.PublicKey) bool {
Expand Down Expand Up @@ -420,8 +423,10 @@ func waitForConnection(timeout bool) {
}

func run() {
defer mailServer.Close()
startServer()
err := startServer()
if err != nil {
return
}
defer server.Stop()
shh.Start(nil)
defer shh.Stop()
Expand All @@ -439,8 +444,11 @@ func run() {
} else {
sendLoop()
}
}

func shutdown() {
close(done)
mailServer.Close()
}

func sendLoop() {
Expand Down

0 comments on commit abed63c

Please sign in to comment.