cc.pendingM.Lock()
cc.pending[req.Seq] = req.ServiceMethod
cc.pendingM.Unlock()
+ if req.Seq == 0xFFFFFFFFFFFFFFFF {
+ panic("keks/rpc: WriteRequest: req.Seq overflow")
+ }
if _, err = keks.Encode(cc.conn, []any{req.Seq + 1, req.ServiceMethod}, nil); err != nil {
return fmt.Errorf("keks/rpc: WriteRequest: %w", err)
}
return fmt.Errorf("keks/rpc: ReadResponseHeader: %w", err)
}
list := r.([]any)
- resp.Seq = list[0].(uint64) - 1
+ resp.Seq = list[0].(uint64)
+ if resp.Seq == 0 {
+ panic("keks/rpc: ReadResponseHeader: resp.Seq is zero")
+ }
+ resp.Seq--
var ok bool
cc.pendingM.Lock()
resp.ServiceMethod, ok = cc.pending[resp.Seq]