Validate agent callback envelopes

This commit is contained in:
m
2026-08-22 12:00:10 +03:00
parent 9766e5396e
commit a6eb4abc91
5 changed files with 68 additions and 2 deletions
+9
View File
@@ -9,6 +9,8 @@ import (
var ErrLeaseRejected = errors.New("agent lease rejected")
var ErrCallbackRejected = errors.New("agent callback rejected")
func AcquireAgentLease(runID work.AgentRunID, workerID string, token work.AgentFencingToken, now time.Time, ttl time.Duration) (work.AgentLease, error) {
if runID == "" || workerID == "" || token == 0 || now.IsZero() || ttl <= 0 {
return work.AgentLease{}, ErrLeaseRejected
@@ -23,3 +25,10 @@ func RenewAgentLease(lease work.AgentLease, workerID string, token work.AgentFen
lease.ExpiresAt = now.Add(ttl)
return lease, nil
}
func ValidateAgentCallback(callback work.AgentCallback, lease work.AgentLease, lastSequence uint64) error {
if lease.State != work.AgentLeaseActive || callback.RunID == "" || callback.RunID != lease.RunID || callback.WorkerID == "" || callback.WorkerID != lease.WorkerID || callback.FencingToken == 0 || callback.FencingToken != lease.FencingToken || callback.Sequence <= lastSequence || callback.Kind == "" || callback.ObservedAt.IsZero() || !callback.ObservedAt.Before(lease.ExpiresAt) {
return ErrCallbackRejected
}
return nil
}