This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git


The following commit(s) were added to refs/heads/master by this push:
     new 1020f3e13 Set content length for PUT in JDK transport (#1798)
1020f3e13 is described below

commit 1020f3e13f9fa0e8a1d14bc594bc63f28fc26302
Author: Tamas Cservenak <[email protected]>
AuthorDate: Wed Feb 18 14:26:28 2026 +0100

    Set content length for PUT in JDK transport (#1798)
    
    That got lost once we moved off from ugly temp file hack.
    
    ---------
    
    Co-authored-by: Konrad Windszus <[email protected]>
---
 .../test/util/http/HttpTransporterTest.java        |  9 ++++++++-
 .../aether/transport/jdk/JdkTransporter.java       | 23 ++++++++++++++--------
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git 
a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
 
b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
index 0270cf367..d1aab00d8 100644
--- 
a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
+++ 
b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
@@ -857,14 +857,18 @@ public abstract class HttpTransporterTest {
     @Test
     protected void testPut_FromMemory() throws Exception {
         RecordingTransportListener listener = new RecordingTransportListener();
+        String payload = "upload";
         PutTask task =
-                new 
PutTask(URI.create("repo/file.txt")).setListener(listener).setDataString("upload");
+                new 
PutTask(URI.create("repo/file.txt")).setListener(listener).setDataString(payload);
         transporter.put(task);
         assertEquals(0L, listener.getDataOffset());
         assertEquals(6L, listener.getDataLength());
         assertEquals(1, listener.getStartedCount());
         assertTrue(listener.getProgressedCount() > 0, "Count: " + 
listener.getProgressedCount());
         assertEquals("upload", TestFileUtils.readString(new File(repoDir, 
"file.txt")));
+        assertEquals(
+                
String.valueOf(payload.getBytes(StandardCharsets.UTF_8).length),
+                
httpServer.getLogEntries().get(0).getRequestHeaders().get("Content-Length"));
     }
 
     @Test
@@ -879,6 +883,9 @@ public abstract class HttpTransporterTest {
         assertEquals(1, listener.getStartedCount());
         assertTrue(listener.getProgressedCount() > 0, "Count: " + 
listener.getProgressedCount());
         assertEquals("upload", TestFileUtils.readString(new File(repoDir, 
"file.txt")));
+        assertEquals(
+                String.valueOf(file.length()),
+                
httpServer.getLogEntries().get(0).getRequestHeaders().get("Content-Length"));
     }
 
     @Test
diff --git 
a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java
 
b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java
index eb0d60f0e..499998920 100644
--- 
a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java
+++ 
b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java
@@ -397,14 +397,21 @@ final class JdkTransporter extends AbstractTransporter 
implements HttpTransporte
         }
         headers.forEach(request::setHeader);
 
-        request.PUT(HttpRequest.BodyPublishers.ofInputStream(() -> {
-            try {
-                return new TransportListenerNotifyingInputStream(
-                        task.newInputStream(), task.getListener(), 
task.getDataLength());
-            } catch (IOException e) {
-                throw new UncheckedIOException(e);
-            }
-        }));
+        if (task.getDataLength() == 0L) {
+            request.PUT(HttpRequest.BodyPublishers.noBody());
+        } else {
+            request.PUT(HttpRequest.BodyPublishers.fromPublisher(
+                    HttpRequest.BodyPublishers.ofInputStream(() -> {
+                        try {
+                            return new TransportListenerNotifyingInputStream(
+                                    task.newInputStream(), task.getListener(), 
task.getDataLength());
+                        } catch (IOException e) {
+                            throw new UncheckedIOException(e);
+                        }
+                    }),
+                    // this adds a content-length request header
+                    task.getDataLength()));
+        }
         prepare(request);
         try {
             HttpResponse<Void> response = send(request.build(), 
HttpResponse.BodyHandlers.discarding());

Reply via email to