mirror of
https://github.com/distribution/distribution.git
synced 2025-08-19 23:38:13 +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 {
|
||||
s := d.S3
|
||||
|
||||
@ -593,6 +611,7 @@ func (d *driver) s3Client(ctx context.Context) *s3.S3 {
|
||||
r := d.logS3Operation(ctx)
|
||||
s.Client.Handlers.Complete.PushBackNamed(r)
|
||||
}
|
||||
s.Client.Handlers.Complete.PushBackNamed(setContentLength)
|
||||
|
||||
return s
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user