summaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/containerd/ttrpc/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/containerd/ttrpc/server.go')
-rw-r--r--vendor/github.com/containerd/ttrpc/server.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/vendor/github.com/containerd/ttrpc/server.go b/vendor/github.com/containerd/ttrpc/server.go
index 263cb4583..40804eac0 100644
--- a/vendor/github.com/containerd/ttrpc/server.go
+++ b/vendor/github.com/containerd/ttrpc/server.go
@@ -414,6 +414,9 @@ func (c *serverConn) run(sctx context.Context) {
case request := <-requests:
active++
go func(id uint32) {
+ ctx, cancel := getRequestContext(ctx, request.req)
+ defer cancel()
+
p, status := c.server.services.call(ctx, request.req.Service, request.req.Method, request.req.Payload)
resp := &Response{
Status: status.Proto(),
@@ -454,3 +457,15 @@ func (c *serverConn) run(sctx context.Context) {
}
}
}
+
+var noopFunc = func() {}
+
+func getRequestContext(ctx context.Context, req *Request) (retCtx context.Context, cancel func()) {
+ cancel = noopFunc
+ if req.TimeoutNano == 0 {
+ return ctx, cancel
+ }
+
+ ctx, cancel = context.WithTimeout(ctx, time.Duration(req.TimeoutNano))
+ return ctx, cancel
+}