File 0295-inets-Fix-handling-of-Content-Type-httpc.patch of Package erlang

From d95cfc3b4a8ea1bbd8ad6c90f1e00b0150a87d7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Dimitrov?= <peterdmv@erlang.org>
Date: Tue, 2 Oct 2018 17:03:00 +0200
Subject: [PATCH] inets: Fix handling of 'Content-Type' (httpc)

'Content-Type' is sent when it is explicitly set as a header or
there is a non-empty body in the request.

Former implementation dropped the explicit 'Content-Type' when
the request had an empty body.

Change-Id: I00a9e4a5011f9d28c04c0dfc5fe1561b1ab7eb09
---
 lib/inets/src/http_client/httpc_request.erl | 12 ++++++++++--
 lib/inets/test/httpc_SUITE.erl              | 10 ++++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/lib/inets/src/http_client/httpc_request.erl b/lib/inets/src/http_client/httpc_request.erl
index 9b81bd7a80..4cb2d57b14 100644
--- a/lib/inets/src/http_client/httpc_request.erl
+++ b/lib/inets/src/http_client/httpc_request.erl
@@ -213,9 +213,11 @@ update_body(Headers, Body) ->
 update_headers(Headers, ContentType, Body, []) ->
     case Body of
         [] ->
-            Headers#http_request_h{'content-length' = "0"};
+            Headers1 = Headers#http_request_h{'content-length' = "0"},
+            handle_content_type(Headers1, ContentType);
         <<>> ->
-            Headers#http_request_h{'content-length' = "0"};
+            Headers1 = Headers#http_request_h{'content-length' = "0"},
+            handle_content_type(Headers1, ContentType);
         {Fun, _Acc} when is_function(Fun, 1) ->
             %% A client MUST NOT generate a 100-continue expectation in a request
             %% that does not include a message body. This implies that either the
@@ -245,6 +247,12 @@ body_length(Body) when is_binary(Body) ->
 body_length(Body) when is_list(Body) ->
   integer_to_list(length(Body)).
 
+%% Set 'Content-Type' when it is explicitly set.
+handle_content_type(Headers, "") ->
+    Headers;
+handle_content_type(Headers, ContentType) ->
+    Headers#http_request_h{'content-type' = ContentType}.
+
 method(Method) ->
     http_util:to_upper(atom_to_list(Method)).
 
-- 
2.16.4

openSUSE Build Service is sponsored by