@ -2068,7 +2068,6 @@ pub async fn post_handler(
// Validate Content-MD5 if provided
let content_md5 = content_md5 . or ( parsed_content_md5 ) ;
let has_request_content_md5 = content_md5 . is_some ( ) ;
if let Some ( ref expected_md5 ) = content_md5 {
if expected_md5 ! = & original_content_md5 {
return json_error_with_query (
@ -2288,13 +2287,13 @@ pub async fn post_handler(
} else {
// H2: Use Content-MD5 computed from original uncompressed data
let content_md5_value = original_content_md5 ;
// Match Go: only include contentMd5 in response when request provided Content-MD5
// Match Go: always include contentMd5 in response JSON and header
let result = UploadResult {
name : filename . clone ( ) ,
size : original_data_size , // H3: use original size, not compressed
etag : n . etag ( ) ,
mime : mime_type . clone ( ) ,
content_md5 : if has_request_content_md5 { Some ( content_md5_value . clone ( ) ) } else { None } ,
content_md5 : Some ( content_md5_value . clone ( ) ) ,
} ;
let etag = n . etag ( ) ;
let etag_header = if etag . starts_with ( '"' ) {
@ -2305,10 +2304,8 @@ pub async fn post_handler(
let mut resp = ( StatusCode ::CREATED , axum ::Json ( result ) ) . into_response ( ) ;
resp . headers_mut ( )
. insert ( header ::ETAG , etag_header . parse ( ) . unwrap ( ) ) ;
if has_request_content_md5 {
resp . headers_mut ( )
. insert ( "Content-MD5" , content_md5_value . parse ( ) . unwrap ( ) ) ;
}
resp . headers_mut ( )
. insert ( "Content-MD5" , content_md5_value . parse ( ) . unwrap ( ) ) ;
resp
}
}