mirror of
https://github.com/distribution/distribution.git
synced 2025-08-20 07:45:33 +00:00
s3: use a request handler to set ContentLength on HeadObjectOutput
This commit is contained in:
parent
78f71c18b4
commit
b0fc5ddc8b
@ -585,6 +585,24 @@ func (d *driver) logS3Operation(ctx context.Context) request.NamedHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// setContentLengthHandlerHame is used to identify the handler used set the
|
||||||
|
// ContentLength field on request data output types that support it.
|
||||||
|
const setContentLengthHandlerName = "docker.storage-driver.s3.set-content-length"
|
||||||
|
|
||||||
|
// setContentLength is used to set the ContentLength field on request data
|
||||||
|
// output types that support it.
|
||||||
|
var setContentLength = request.NamedHandler{
|
||||||
|
Name: setContentLengthHandlerName,
|
||||||
|
Fn: func(r *request.Request) {
|
||||||
|
switch v := r.Data.(type) {
|
||||||
|
case *s3.HeadObjectOutput:
|
||||||
|
if r.HTTPResponse.ContentLength > 0 {
|
||||||
|
v.SetContentLength(r.HTTPResponse.ContentLength)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
func (d *driver) s3Client(ctx context.Context) *s3.S3 {
|
func (d *driver) s3Client(ctx context.Context) *s3.S3 {
|
||||||
s := d.S3
|
s := d.S3
|
||||||
|
|
||||||
@ -593,6 +611,7 @@ func (d *driver) s3Client(ctx context.Context) *s3.S3 {
|
|||||||
r := d.logS3Operation(ctx)
|
r := d.logS3Operation(ctx)
|
||||||
s.Client.Handlers.Complete.PushBackNamed(r)
|
s.Client.Handlers.Complete.PushBackNamed(r)
|
||||||
}
|
}
|
||||||
|
s.Client.Handlers.Complete.PushBackNamed(setContentLength)
|
||||||
|
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user