defTxRate = *cfg.TxRate
}
- defOnlineDeadline := uint(DefaultDeadline)
+ defOnlineDeadline := DefaultDeadline
if cfg.OnlineDeadline != nil {
if *cfg.OnlineDeadline <= 0 {
return nil, errors.New("OnlineDeadline must be at least 1 second")
}
- defOnlineDeadline = *cfg.OnlineDeadline
+ defOnlineDeadline = time.Duration(*cfg.OnlineDeadline) * time.Second
}
var defMaxOnlineTime time.Duration
if cfg.MaxOnlineTime != nil {
if *callCfg.OnlineDeadline == 0 {
return nil, errors.New("OnlineDeadline must be at least 1 second")
}
- onlineDeadline = *callCfg.OnlineDeadline
+ onlineDeadline = time.Duration(*callCfg.OnlineDeadline) * time.Second
}
var maxOnlineTime time.Duration
version = flag.Bool("version", false, "Print version information")
warranty = flag.Bool("warranty", false, "Print warranty information")
- onlineDeadline = flag.Uint("onlinedeadline", 0, "Override onlinedeadline option")
- maxOnlineTimeSec = flag.Uint("maxonlinetime", 0, "Override maxonlinetime option")
+ onlineDeadlineSec = flag.Uint("onlinedeadline", 0, "Override onlinedeadline option")
+ maxOnlineTimeSec = flag.Uint("maxonlinetime", 0, "Override maxonlinetime option")
)
flag.Usage = usage
flag.Parse()
log.Fatalln("Node does not have online communication capability")
}
- if *onlineDeadline == 0 {
- onlineDeadline = &node.OnlineDeadline
+ onlineDeadline := node.OnlineDeadline
+ if *onlineDeadlineSec != 0 {
+ onlineDeadline = time.Duration(*onlineDeadlineSec) * time.Second
}
- var maxOnlineTime time.Duration
- if *maxOnlineTimeSec == 0 {
- maxOnlineTime = node.MaxOnlineTime
- } else {
+ maxOnlineTime := node.MaxOnlineTime
+ if *maxOnlineTimeSec != 0 {
maxOnlineTime = time.Duration(*maxOnlineTimeSec) * time.Second
}
xxOnly,
*rxRate,
*txRate,
- *onlineDeadline,
+ onlineDeadline,
maxOnlineTime,
*listOnly,
onlyPkts,
)
const (
- MaxSPSize = 1<<16 - 256
- PartSuffix = ".part"
- DefaultDeadline = 10
-
+ MaxSPSize = 1<<16 - 256
+ PartSuffix = ".part"
SPHeadOverhead = 4
)
noise.HashBLAKE2b,
)
+ DefaultDeadline = 10 * time.Second
+
spWorkersGroup sync.WaitGroup
)
Ctx *Ctx
Node *Node
Nice uint8
- onlineDeadline uint
+ onlineDeadline time.Duration
maxOnlineTime time.Duration
hs *noise.HandshakeState
csOur *noise.CipherState
}
sds := SDS{"node": nodeId, "nice": int(state.Nice)}
state.Ctx.LogD("sp-start", sds, "sending first message")
- conn.SetWriteDeadline(time.Now().Add(DefaultDeadline * time.Second))
+ conn.SetWriteDeadline(time.Now().Add(DefaultDeadline))
if err = state.WriteSP(conn, buf); err != nil {
state.Ctx.LogE("sp-start", sds, err, "")
state.dirUnlock()
return err
}
state.Ctx.LogD("sp-start", sds, "waiting for first message")
- conn.SetReadDeadline(time.Now().Add(DefaultDeadline * time.Second))
+ conn.SetReadDeadline(time.Now().Add(DefaultDeadline))
if buf, err = state.ReadSP(conn); err != nil {
state.Ctx.LogE("sp-start", sds, err, "")
state.dirUnlock()
var buf []byte
var payload []byte
state.Ctx.LogD("sp-start", SDS{"nice": int(state.Nice)}, "waiting for first message")
- conn.SetReadDeadline(time.Now().Add(DefaultDeadline * time.Second))
+ conn.SetReadDeadline(time.Now().Add(DefaultDeadline))
if buf, err = state.ReadSP(conn); err != nil {
state.Ctx.LogE("sp-start", SDS{}, err, "")
return err
state.dirUnlock()
return err
}
- conn.SetWriteDeadline(time.Now().Add(DefaultDeadline * time.Second))
+ conn.SetWriteDeadline(time.Now().Add(DefaultDeadline))
if err = state.WriteSP(conn, buf); err != nil {
state.Ctx.LogE("sp-start", sds, err, "")
state.dirUnlock()
return
}
case now := <-ticker.C:
- if (uint(now.Sub(state.RxLastSeen).Seconds()) >= state.onlineDeadline &&
- uint(now.Sub(state.TxLastSeen).Seconds()) >= state.onlineDeadline) ||
+ if (now.Sub(state.RxLastSeen) >= state.onlineDeadline &&
+ now.Sub(state.TxLastSeen) >= state.onlineDeadline) ||
(state.maxOnlineTime > 0 && state.mustFinishAt.Before(now)) {
state.SetDead()
conn.Close()
break
}
state.Ctx.LogD("sp-recv", sds, "waiting for payload")
- conn.SetReadDeadline(time.Now().Add(DefaultDeadline * time.Second))
+ conn.SetReadDeadline(time.Now().Add(DefaultDeadline))
payload, err := state.ReadSP(conn)
if err != nil {
if err == io.EOF {