From ccad5367ba83c3cda46762b47ea9f84b2ecf724a Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 20 Dec 2019 14:47:41 +0300 Subject: [PATCH] Use typed time.Duration instead of raw uint for maxOnlineTime --- src/call.go | 6 ++++-- src/cfg.go | 11 ++++++----- src/cmd/nncp-call/main.go | 14 +++++++++----- src/node.go | 3 ++- src/sp.go | 4 ++-- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/call.go b/src/call.go index 978d911..727b95f 100644 --- a/src/call.go +++ b/src/call.go @@ -19,6 +19,7 @@ package nncp import ( "net" + "time" "github.com/gorhill/cronexpr" ) @@ -31,7 +32,7 @@ type Call struct { TxRate int Addr *string OnlineDeadline uint - MaxOnlineTime uint + MaxOnlineTime time.Duration } func (ctx *Ctx) CallNode( @@ -40,7 +41,8 @@ func (ctx *Ctx) CallNode( nice uint8, xxOnly TRxTx, rxRate, txRate int, - onlineDeadline, maxOnlineTime uint, + onlineDeadline uint, + maxOnlineTime time.Duration, listOnly bool, onlyPkts map[[32]byte]bool, ) (isGood bool) { diff --git a/src/cfg.go b/src/cfg.go index fab3587..42fa918 100644 --- a/src/cfg.go +++ b/src/cfg.go @@ -25,6 +25,7 @@ import ( "os" "path" "strconv" + "time" "github.com/gorhill/cronexpr" "github.com/hjson/hjson-go" @@ -201,9 +202,9 @@ func NewNode(name string, cfg NodeJSON) (*Node, error) { } defOnlineDeadline = *cfg.OnlineDeadline } - var defMaxOnlineTime uint - if yml.MaxOnlineTime != nil { - defMaxOnlineTime = *yml.MaxOnlineTime + var defMaxOnlineTime time.Duration + if cfg.MaxOnlineTime != nil { + defMaxOnlineTime = time.Duration(*cfg.MaxOnlineTime) * time.Second } var calls []*Call @@ -259,9 +260,9 @@ func NewNode(name string, cfg NodeJSON) (*Node, error) { onlineDeadline = *callCfg.OnlineDeadline } - var maxOnlineTime uint + var maxOnlineTime time.Duration if callCfg.MaxOnlineTime != nil { - maxOnlineTime = *callCfg.MaxOnlineTime + maxOnlineTime = time.Duration(*callCfg.MaxOnlineTime) * time.Second } calls = append(calls, &Call{ diff --git a/src/cmd/nncp-call/main.go b/src/cmd/nncp-call/main.go index f4eed67..7b0a0d8 100644 --- a/src/cmd/nncp-call/main.go +++ b/src/cmd/nncp-call/main.go @@ -24,6 +24,7 @@ import ( "log" "os" "strings" + "time" "go.cypherpunks.ru/nncp/v5" ) @@ -55,8 +56,8 @@ func main() { version = flag.Bool("version", false, "Print version information") warranty = flag.Bool("warranty", false, "Print warranty information") - onlineDeadline = flag.Uint("onlinedeadline", 0, "Override onlinedeadline option") - maxOnlineTime = flag.Uint("maxonlinetime", 0, "Override maxonlinetime option") + onlineDeadline = flag.Uint("onlinedeadline", 0, "Override onlinedeadline option") + maxOnlineTimeSec = flag.Uint("maxonlinetime", 0, "Override maxonlinetime option") ) flag.Usage = usage flag.Parse() @@ -108,8 +109,11 @@ func main() { if *onlineDeadline == 0 { onlineDeadline = &node.OnlineDeadline } - if *maxOnlineTime == 0 { - maxOnlineTime = &node.MaxOnlineTime + var maxOnlineTime time.Duration + if *maxOnlineTimeSec == 0 { + maxOnlineTime = node.MaxOnlineTime + } else { + maxOnlineTime = time.Duration(*maxOnlineTimeSec) * time.Second } var xxOnly nncp.TRxTx @@ -158,7 +162,7 @@ func main() { *rxRate, *txRate, *onlineDeadline, - *maxOnlineTime, + maxOnlineTime, *listOnly, onlyPkts, ) { diff --git a/src/node.go b/src/node.go index 051d056..e93b8d9 100644 --- a/src/node.go +++ b/src/node.go @@ -21,6 +21,7 @@ import ( "crypto/rand" "errors" "sync" + "time" "github.com/flynn/noise" "golang.org/x/crypto/blake2b" @@ -51,7 +52,7 @@ type Node struct { RxRate int TxRate int OnlineDeadline uint - MaxOnlineTime uint + MaxOnlineTime time.Duration Calls []*Call Busy bool diff --git a/src/sp.go b/src/sp.go index d2123ee..db361d7 100644 --- a/src/sp.go +++ b/src/sp.go @@ -172,7 +172,7 @@ type SPState struct { Node *Node Nice uint8 onlineDeadline uint - maxOnlineTime uint + maxOnlineTime time.Duration hs *noise.HandshakeState csOur *noise.CipherState csTheir *noise.CipherState @@ -228,7 +228,7 @@ func (state *SPState) NotAlive() bool { default: } now := time.Now() - if state.maxOnlineTime > 0 && state.started.Add(time.Duration(state.maxOnlineTime)*time.Second).Before(now) { + if state.maxOnlineTime > 0 && state.started.Add(state.maxOnlineTime).Before(now) { return true } return uint(now.Sub(state.RxLastSeen).Seconds()) >= state.onlineDeadline && -- 2.44.0