fix: return errors instead of nil in RequestTask and ReportSystemState methods

This commit is contained in:
naiba 2025-03-03 22:45:08 +08:00
parent f1e3613daf
commit 63208c1d35

View File

@ -51,7 +51,7 @@ func (s *NezhaHandler) RequestTask(stream pb.NezhaService_RequestTaskServer) err
result, err = stream.Recv() result, err = stream.Recv()
if err != nil { if err != nil {
log.Printf("NEZHA>> RequestTask error: %v, clientID: %d\n", err, clientID) log.Printf("NEZHA>> RequestTask error: %v, clientID: %d\n", err, clientID)
return nil return err
} }
switch result.GetType() { switch result.GetType() {
case model.TaskTypeCommand: case model.TaskTypeCommand:
@ -94,9 +94,8 @@ func (s *NezhaHandler) RequestTask(stream pb.NezhaService_RequestTaskServer) err
} }
func (s *NezhaHandler) ReportSystemState(stream pb.NezhaService_ReportSystemStateServer) error { func (s *NezhaHandler) ReportSystemState(stream pb.NezhaService_ReportSystemStateServer) error {
var err error clientID, err := s.Auth.Check(stream.Context())
var clientID uint64 if err != nil {
if clientID, err = s.Auth.Check(stream.Context()); err != nil {
return err return err
} }
var state *pb.State var state *pb.State
@ -104,24 +103,27 @@ func (s *NezhaHandler) ReportSystemState(stream pb.NezhaService_ReportSystemStat
state, err = stream.Recv() state, err = stream.Recv()
if err != nil { if err != nil {
log.Printf("NEZHA>> ReportSystemState error: %v, clientID: %d\n", err, clientID) log.Printf("NEZHA>> ReportSystemState error: %v, clientID: %d\n", err, clientID)
return nil return err
} }
state := model.PB2State(state) innerState := model.PB2State(state)
server, ok := singleton.ServerShared.Get(clientID) server, ok := singleton.ServerShared.Get(clientID)
if !ok || server == nil { if !ok || server == nil {
return nil return errors.New("server not found")
} }
server.LastActive = time.Now() server.LastActive = time.Now()
server.State = &state server.State = &innerState
// 应对 dashboard 重启的情况,如果从未记录过,先打点,等到小时时间点时入库 // 应对 dashboard 重启的情况,如果从未记录过,先打点,等到小时时间点时入库
if server.PrevTransferInSnapshot == 0 || server.PrevTransferOutSnapshot == 0 { if server.PrevTransferInSnapshot == 0 || server.PrevTransferOutSnapshot == 0 {
server.PrevTransferInSnapshot = int64(state.NetInTransfer) server.PrevTransferInSnapshot = int64(state.NetInTransfer)
server.PrevTransferOutSnapshot = int64(state.NetOutTransfer) server.PrevTransferOutSnapshot = int64(state.NetOutTransfer)
} }
stream.Send(&pb.Receipt{Proced: true}) if err = stream.Send(&pb.Receipt{Proced: true}); err != nil {
return err
}
} }
} }