]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/sp.go
Fix RxLastNonPing setting
[nncp.git] / src / sp.go
index 1d4e1c60c271ada75da2e3c22b1a0b91d086b9dd..37cf265ead11ac3588fcb66eab69f7641599cc9c 100644 (file)
--- a/src/sp.go
+++ b/src/sp.go
@@ -22,7 +22,6 @@ import (
        "crypto/subtle"
        "errors"
        "io"
-       "net"
        "os"
        "path/filepath"
        "sort"
@@ -335,14 +334,14 @@ func (state *SPState) StartI(conn ConnDeadlined) error {
        }
        var rxLock *os.File
        if !state.listOnly && (state.xxOnly == "" || state.xxOnly == TRx) {
-               rxLock, err = state.Ctx.LockDir(nodeId, TRx)
+               rxLock, err = state.Ctx.LockDir(nodeId, string(TRx))
                if err != nil {
                        return err
                }
        }
        var txLock *os.File
        if !state.listOnly && (state.xxOnly == "" || state.xxOnly == TTx) {
-               txLock, err = state.Ctx.LockDir(nodeId, TTx)
+               txLock, err = state.Ctx.LockDir(nodeId, string(TTx))
                if err != nil {
                        return err
                }
@@ -481,7 +480,7 @@ func (state *SPState) StartR(conn ConnDeadlined) error {
        }
        var rxLock *os.File
        if xxOnly == "" || xxOnly == TRx {
-               rxLock, err = state.Ctx.LockDir(node.Id, TRx)
+               rxLock, err = state.Ctx.LockDir(node.Id, string(TRx))
                if err != nil {
                        return err
                }
@@ -489,7 +488,7 @@ func (state *SPState) StartR(conn ConnDeadlined) error {
        state.rxLock = rxLock
        var txLock *os.File
        if xxOnly == "" || xxOnly == TTx {
-               txLock, err = state.Ctx.LockDir(node.Id, TTx)
+               txLock, err = state.Ctx.LockDir(node.Id, string(TTx))
                if err != nil {
                        return err
                }
@@ -606,7 +605,6 @@ func (state *SPState) StartWorkers(
                                        go func() {
                                                state.pings <- struct{}{}
                                                state.wg.Done()
-                                               state.Ctx.LogD("HERE", SDS{}, "PING GOROUTINE QUIT")
                                        }()
                                }
                        }
@@ -768,8 +766,7 @@ func (state *SPState) StartWorkers(
                                        break
                                }
                                unmarshalErr := err.(*xdr.UnmarshalError)
-                               netErr, ok := unmarshalErr.Err.(net.Error)
-                               if ok && netErr.Timeout() {
+                               if os.IsTimeout(unmarshalErr.Err) {
                                        continue
                                }
                                if unmarshalErr.ErrorCode == xdr.ErrIO {
@@ -854,6 +851,9 @@ func (state *SPState) ProcessSP(payload []byte) ([][]byte, error) {
                        state.Ctx.LogE("sp-process", sds, err, "")
                        return nil, err
                }
+               if head.Type != SPTypePing {
+                       state.RxLastNonPing = state.RxLastSeen
+               }
                switch head.Type {
                case SPTypeHalt:
                        state.Ctx.LogD("sp-process", SdsAdd(sds, SDS{"type": "halt"}), "")
@@ -1089,9 +1089,6 @@ func (state *SPState) ProcessSP(payload []byte) ([][]byte, error) {
                        )
                        return nil, BadPktType
                }
-               if head.Type != SPTypePing {
-                       state.RxLastNonPing = state.RxLastSeen
-               }
        }
        if infosGot {
                var pkts int