[FIX] RSpamD should not fail when reporting empty body
diff --git a/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java b/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
index 427b2e4..883bad3 100644
--- a/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
+++ b/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
@@ -248,6 +248,10 @@
LOGGER.debug(responseBody);
return Mono.empty();
}
+ if (responseBody.contains("Empty body is not permitted")) {
+ LOGGER.debug(responseBody);
+ return Mono.empty();
+ }
return Mono.error(() -> new RspamdUnexpectedException(responseBody));
});
}
diff --git a/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java b/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
index eb2777d..2f8e384 100644
--- a/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
+++ b/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
@@ -27,6 +27,7 @@
import static org.hamcrest.Matchers.nullValue;
import static org.hamcrest.core.Is.is;
+import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Optional;
@@ -317,6 +318,15 @@
assertThat(client.ping().block().status()).isEqualTo(HttpResponseStatus.OK);
}
+ @Test
+ void shouldNotFailOnEmptyContent() {
+ RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
+ RspamdHttpClient client = new RspamdHttpClient(configuration);
+
+ client.reportAsSpam(ReactorUtils.toChunks(new ByteArrayInputStream("".getBytes()),
+ BUFFER_SIZE), RspamdHttpClient.Options.forUser(BOB)).block();
+ }
+
private void reportAsSpam(RspamdHttpClient client, InputStream inputStream) {
client.reportAsSpam(ReactorUtils.toChunks(inputStream, BUFFER_SIZE)).block();
}