|
|
@@ -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() {
|