michael-o commented on code in PR #556:
URL: 
https://github.com/apache/httpcomponents-client/pull/556#discussion_r1528332718


##########
httpclient5/src/main/java/org/apache/hc/client5/http/entity/mime/MultipartEntityBuilder.java:
##########
@@ -253,12 +253,13 @@ MultipartFormEntity buildEntity() {
         if (charsetCopy == null && contentType != null) {
             charsetCopy = contentType.getCharset();
         }
-        final List<NameValuePair> paramsList = new ArrayList<>(2);
-        paramsList.add(new BasicNameValuePair("boundary", boundaryCopy));
-        if (charsetCopy != null) {
-            paramsList.add(new BasicNameValuePair("charset", 
charsetCopy.name()));
-        }
-        final NameValuePair[] params = 
paramsList.toArray(EMPTY_NAME_VALUE_ARRAY);
+        // Previusly, "charset" parameter was added to the Content-Type 
header, however adding "charset=..."
+        // is not specified in RFC 7578, and it causes issues with (flawed?) 
HTTP servers.
+        // For instance:
+        //  
https://github.com/owasp-modsecurity/ModSecurity/commit/6e56950cdf258c9b39f12cf6eb014cb59797cfd3
+        //  https://github.com/akka/akka-http/issues/338
+        //  https://bz.apache.org/bugzilla/show_bug.cgi?id=61384
+        final NameValuePair[] params = new NameValuePair[]{new 
BasicNameValuePair("boundary", boundaryCopy)};

Review Comment:
   This belongs into the commit message



##########
httpclient5/src/test/java/org/apache/hc/client5/http/entity/mime/TestMultipartEntityBuilder.java:
##########
@@ -88,7 +88,7 @@ public void testMultipartCustomContentType() throws Exception 
{
                 .setLaxMode()
                 .buildEntity();
         Assertions.assertNotNull(entity);
-        Assertions.assertEquals("application/xml; boundary=blah-blah; 
charset=UTF-8", entity.getContentType());
+        Assertions.assertEquals("application/xml; charset=UTF-8; 
boundary=blah-blah", entity.getContentType());

Review Comment:
   Regardless of your change, I question this test because a multipart request 
shall start with `multipart/` type...



##########
httpclient5/src/test/java/org/apache/hc/client5/http/entity/mime/TestMultipartEntityBuilder.java:
##########
@@ -130,7 +130,7 @@ public void 
testMultipartCustomContentTypeUsingAddParameter() {
         eb.buildEntity();
         final MultipartFormEntity entity =  eb.buildEntity();
         Assertions.assertNotNull(entity);
-        Assertions.assertEquals("multipart/related; boundary=yada-yada; 
charset=US-ASCII; my=stuff",
+        Assertions.assertEquals("multipart/related; boundary=yada-yada; 
charset=ascii; my=stuff",
                 entity.getContentType());

Review Comment:
   Same for these two...



##########
httpclient5/src/test/java/org/apache/hc/client5/http/entity/mime/TestMultipartEntityBuilder.java:
##########
@@ -99,7 +99,7 @@ public void testMultipartContentTypeParameter() throws 
Exception {
                         new BasicNameValuePair("charset", "ascii")))
                 .buildEntity();
         Assertions.assertNotNull(entity);
-        Assertions.assertEquals("multipart/form-data; boundary=yada-yada; 
charset=US-ASCII", entity.getContentType());
+        Assertions.assertEquals("multipart/form-data; boundary=yada-yada; 
charset=ascii", entity.getContentType());

Review Comment:
   The charset shouldn't appear at all, no?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to