Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package aws-c-s3 for openSUSE:Factory 
checked in at 2025-12-31 10:47:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-s3 (Old)
 and      /work/SRC/openSUSE:Factory/.aws-c-s3.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "aws-c-s3"

Wed Dec 31 10:47:46 2025 rev:34 rq:1324861 version:0.11.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-s3/aws-c-s3.changes        2025-12-01 
11:15:32.684153524 +0100
+++ /work/SRC/openSUSE:Factory/.aws-c-s3.new.1928/aws-c-s3.changes      
2025-12-31 10:48:25.348926755 +0100
@@ -1,0 +2,7 @@
+Tue Dec  9 08:45:18 UTC 2025 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to version 0.11.3
+  * Disable hedging for s3 express by @TingDaoK in (#602)
+  * Don't crash for server error. Handle it nicely by @TingDaoK in (#604)
+
+-------------------------------------------------------------------

Old:
----
  v0.11.2.tar.gz

New:
----
  v0.11.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ aws-c-s3.spec ++++++
--- /var/tmp/diff_new_pack.Zv2NT3/_old  2025-12-31 10:48:25.944951145 +0100
+++ /var/tmp/diff_new_pack.Zv2NT3/_new  2025-12-31 10:48:25.948951309 +0100
@@ -19,7 +19,7 @@
 %define library_version 1.0.0
 %define library_soversion 0unstable
 Name:           aws-c-s3
-Version:        0.11.2
+Version:        0.11.3
 Release:        0
 Summary:        AWS Cross-Platform, C99 wrapper for cryptography primitives
 License:        Apache-2.0

++++++ v0.11.2.tar.gz -> v0.11.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-s3-0.11.2/source/s3_auto_ranged_put.c 
new/aws-c-s3-0.11.3/source/s3_auto_ranged_put.c
--- old/aws-c-s3-0.11.2/source/s3_auto_ranged_put.c     2025-11-25 
02:17:00.000000000 +0100
+++ new/aws-c-s3-0.11.3/source/s3_auto_ranged_put.c     2025-11-27 
00:19:22.000000000 +0100
@@ -464,8 +464,11 @@
     struct aws_http_stream *stream,
     int error_code) {
     struct aws_s3_request *request = connection->request;
-    if (request->request_tag == AWS_S3_AUTO_RANGED_PUT_REQUEST_TAG_PART) {
+    if (request->request_tag == AWS_S3_AUTO_RANGED_PUT_REQUEST_TAG_PART && 
!request->meta_request->is_express) {
         /* TODO: the single part upload may also be improved from a timeout as 
multipart. */
+        /* Note: For S3express, server responses random ETag. Killing the 
connection in the middle may cause server
+         * receive two same part and result in confusing during complete MPU 
with etag doesn't match.
+         * Disable the first byte timeout for s3 express.  */
         
aws_s3_client_update_upload_part_timeout(request->meta_request->client, 
request, error_code);
     }
     aws_s3_meta_request_send_request_finish_default(connection, stream, 
error_code);
@@ -1216,11 +1219,13 @@
             aws_s3_meta_request_lock_synced_data(meta_request);
             struct aws_s3_mpu_part_info *part = NULL;
             aws_array_list_get_at(&auto_ranged_put->synced_data.part_list, 
&part, request->part_number - 1);
+            /**
+             * 1. If request retries, get the checksum context from the 
previous attempt to reuse it. In case of the the
+             *      request body in memory mangled
+             * 2. If this is the first attempt, the context is initialized 
from the previous prepare step.
+             **/
             AWS_ASSERT(part != NULL && part->checksum_context != NULL);
-            /* Use checksum context if available, otherwise NULL for new parts 
*/
             checksum_context = part->checksum_context;
-            /* If checksum already calculated, it means either the part being 
retried or the part resumed from list
-             * parts. Keep reusing the old checksum in case of the request 
body in memory mangled */
             aws_s3_meta_request_unlock_synced_data(meta_request);
         }
         /* END CRITICAL SECTION */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-s3-0.11.2/source/s3_checksum_context.c 
new/aws-c-s3-0.11.3/source/s3_checksum_context.c
--- old/aws-c-s3-0.11.2/source/s3_checksum_context.c    2025-11-25 
02:17:00.000000000 +0100
+++ new/aws-c-s3-0.11.3/source/s3_checksum_context.c    2025-11-27 
00:19:22.000000000 +0100
@@ -182,7 +182,6 @@
         return checksum_cursor;
     }
     s_lock_synced_data(context);
-    /* If not previous calculated */
     if (context->synced_data.checksum_calculated) {
         checksum_cursor = 
aws_byte_cursor_from_buf(&context->synced_data.base64_checksum);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-s3-0.11.2/source/s3_meta_request.c 
new/aws-c-s3-0.11.3/source/s3_meta_request.c
--- old/aws-c-s3-0.11.2/source/s3_meta_request.c        2025-11-25 
02:17:00.000000000 +0100
+++ new/aws-c-s3-0.11.3/source/s3_meta_request.c        2025-11-27 
00:19:22.000000000 +0100
@@ -1188,7 +1188,10 @@
         options.on_metrics = s_s3_meta_request_stream_metrics;
     }
     options.on_complete = s_s3_meta_request_stream_complete;
-    if (request->request_type == AWS_S3_REQUEST_TYPE_UPLOAD_PART) {
+    if (request->request_type == AWS_S3_REQUEST_TYPE_UPLOAD_PART && 
!meta_request->is_express) {
+        /* Note: For S3express, server responses random ETag. Killing the 
connection in the middle may cause server
+         * receive two same part and result in confusing during complete MPU 
with etag doesn't match.
+         * Disable the first byte timeout for s3 express.  */
         options.response_first_byte_timeout_ms = 
aws_atomic_load_int(&meta_request->client->upload_timeout_ms);
         request->upload_timeout_ms = 
(size_t)options.response_first_byte_timeout_ms;
     }
@@ -1408,13 +1411,34 @@
                     aws_error_str(aws_last_error()));
                 return AWS_OP_ERR;
             } else {
+                /* Make we get what we ask for. */
                 if (request->part_range_end != 0) {
-                    AWS_FATAL_ASSERT(request->part_range_start == 
object_range_start);
+                    if (request->part_range_start != object_range_start) {
+                        /* Log the error */
+                        AWS_LOGF_ERROR(
+                            AWS_LS_S3_META_REQUEST,
+                            "id=%p: Part range start mismatch. Expected: %" 
PRIu64 ", Actual: %" PRIu64 "",
+                            (void *)meta_request,
+                            request->part_range_start,
+                            object_range_start);
+                        return 
aws_raise_error(AWS_ERROR_S3_INVALID_CONTENT_RANGE_HEADER);
+                    }
                     if (request->part_range_end != object_range_end) {
-                        /* In the case where the object size is less than the 
range requested, it will return the bytes
-                         * to the object size. Range is inclusive */
-                        AWS_FATAL_ASSERT(object_range_start + object_size - 1 
== object_range_end);
-                        AWS_FATAL_ASSERT(request->part_range_end > 
object_range_end);
+                        /* In the case where the object size is less than the 
range requested. It must be return the
+                         * last part to the end of the object. */
+                        if (object_size != object_range_end + 1 || 
request->part_range_end < object_range_end) {
+                            /* Something went wrong if it's matching. Log the 
error. */
+                            AWS_LOGF_ERROR(
+                                AWS_LS_S3_META_REQUEST,
+                                "id=%p: Part range end mismatch. Expected: %" 
PRIu64 ", Actual: %" PRIu64
+                                ", while object size is: "
+                                "%" PRIu64 ".",
+                                (void *)meta_request,
+                                request->part_range_end,
+                                object_range_end,
+                                object_size);
+                            return 
aws_raise_error(AWS_ERROR_S3_INVALID_CONTENT_RANGE_HEADER);
+                        }
                     }
                 }
             }
@@ -2056,7 +2080,17 @@
                     meta_request->io_threaded_data.next_deliver_range_start = 
delivery_range_start;
                 }
                 /* Make sure the response body is delivered in the sequential 
order */
-                AWS_FATAL_ASSERT(delivery_range_start == 
meta_request->io_threaded_data.next_deliver_range_start);
+                if (delivery_range_start != 
meta_request->io_threaded_data.next_deliver_range_start) {
+                    /* Unexpected error, log the error */
+                    AWS_LOGF_ERROR(
+                        AWS_LS_S3_META_REQUEST,
+                        "id=%p: Unexpected code error. Please report the error 
to the team, "
+                        "delivery_range_start:%" PRIu64 ", 
next_deliver_range_start:%" PRIu64 ".",
+                        (void *)meta_request,
+                        delivery_range_start,
+                        
meta_request->io_threaded_data.next_deliver_range_start);
+                    error_code = AWS_ERROR_INVALID_STATE;
+                }
                 meta_request->io_threaded_data.next_deliver_range_start += 
response_body.len;
 
                 if (error_code == AWS_ERROR_SUCCESS && response_body.len > 0) {

Reply via email to