|
|
|
@ -342,6 +342,12 @@ func (s3a *S3ApiServer) GetObjectHandler(w http.ResponseWriter, r *http.Request) |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
// Safety check: entry must be valid after successful retrieval
|
|
|
|
if entry == nil { |
|
|
|
glog.Errorf("GetObject: getSpecificObjectVersion returned nil entry without error for version %s", versionId) |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
targetVersionId = versionId |
|
|
|
} else { |
|
|
|
// Request for latest version
|
|
|
|
@ -352,6 +358,12 @@ func (s3a *S3ApiServer) GetObjectHandler(w http.ResponseWriter, r *http.Request) |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
// Safety check: entry must be valid after successful retrieval
|
|
|
|
if entry == nil { |
|
|
|
glog.Errorf("GetObject: getLatestObjectVersion returned nil entry without error for %s%s", bucket, object) |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
if entry.Extended != nil { |
|
|
|
if versionIdBytes, exists := entry.Extended[s3_constants.ExtVersionIdKey]; exists { |
|
|
|
targetVersionId = string(versionIdBytes) |
|
|
|
@ -1162,6 +1174,12 @@ func (s3a *S3ApiServer) HeadObjectHandler(w http.ResponseWriter, r *http.Request |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
// Safety check: entry must be valid after successful retrieval
|
|
|
|
if entry == nil { |
|
|
|
glog.Errorf("HeadObject: getSpecificObjectVersion returned nil entry without error for version %s", versionId) |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
targetVersionId = versionId |
|
|
|
} else { |
|
|
|
// Request for latest version
|
|
|
|
@ -1172,6 +1190,12 @@ func (s3a *S3ApiServer) HeadObjectHandler(w http.ResponseWriter, r *http.Request |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
// Safety check: entry must be valid after successful retrieval
|
|
|
|
if entry == nil { |
|
|
|
glog.Errorf("HeadObject: getLatestObjectVersion returned nil entry without error for %s%s", bucket, object) |
|
|
|
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey) |
|
|
|
return |
|
|
|
} |
|
|
|
if entry.Extended != nil { |
|
|
|
if versionIdBytes, exists := entry.Extended[s3_constants.ExtVersionIdKey]; exists { |
|
|
|
targetVersionId = string(versionIdBytes) |
|
|
|
|