diff options
author | Vlad <gluk256@gmail.com> | 2018-03-05 06:30:18 +0800 |
---|---|---|
committer | Vlad <gluk256@gmail.com> | 2018-03-05 06:35:05 +0800 |
commit | 61a061c9b4a5dd789b936ba3607f3617db361d1e (patch) | |
tree | f79b8b685d9d8dbf989fe1baf6fbda274d66ca1d /cmd/wnode | |
parent | 0b814d32f8737b194874942f11dc3e9e7399cf7b (diff) | |
download | dexon-61a061c9b4a5dd789b936ba3607f3617db361d1e.tar dexon-61a061c9b4a5dd789b936ba3607f3617db361d1e.tar.gz dexon-61a061c9b4a5dd789b936ba3607f3617db361d1e.tar.bz2 dexon-61a061c9b4a5dd789b936ba3607f3617db361d1e.tar.lz dexon-61a061c9b4a5dd789b936ba3607f3617db361d1e.tar.xz dexon-61a061c9b4a5dd789b936ba3607f3617db361d1e.tar.zst dexon-61a061c9b4a5dd789b936ba3607f3617db361d1e.zip |
whisper: refactoring go-routines
Diffstat (limited to 'cmd/wnode')
-rw-r--r-- | cmd/wnode/main.go | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/cmd/wnode/main.go b/cmd/wnode/main.go index 00a854fe8..84bdfa4c3 100644 --- a/cmd/wnode/main.go +++ b/cmd/wnode/main.go @@ -110,6 +110,7 @@ func main() { processArgs() initialize() run() + shutdown() } func processArgs() { @@ -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 { @@ -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, @@ -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))) @@ -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 { @@ -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() @@ -439,8 +444,11 @@ func run() { } else { sendLoop() } +} +func shutdown() { close(done) + mailServer.Close() } func sendLoop() { |