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());