package oonimkall import ( "context" "math" "time" ) const maxTimeout = int64(time.Duration(math.MaxInt64) / time.Second) func clampTimeout(timeout, max int64) int64 { if timeout > max { timeout = max } return timeout } func newContext(timeout int64) (context.Context, context.CancelFunc) { return newContextEx(timeout, maxTimeout) } func newContextEx(timeout, max int64) (context.Context, context.CancelFunc) { if timeout > 0 { timeout = clampTimeout(timeout, max) return context.WithTimeout( context.Background(), time.Duration(timeout)*time.Second) } return context.WithCancel(context.Background()) }