aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cowboy_protocol.erl3
-rw-r--r--src/cowboy_req.erl7
2 files changed, 8 insertions, 2 deletions
diff --git a/src/cowboy_protocol.erl b/src/cowboy_protocol.erl
index 8ddd40d..9520667 100644
--- a/src/cowboy_protocol.erl
+++ b/src/cowboy_protocol.erl
@@ -205,8 +205,7 @@ header({http_header, _I, 'Connection', _R, Connection}, Req,
parse_header(cowboy_req:set_connection(Connection, Req), State);
header({http_header, _I, Field, _R, Value}, Req, State) ->
Field2 = format_header(Field),
- parse_header(Req#http_req{headers=[{Field2, Value}|Req#http_req.headers]},
- State);
+ parse_header(cowboy_req:add_header(Field2, Value, Req), State);
%% The Host header is required in HTTP/1.1 and optional in HTTP/1.0.
header(http_eoh, Req, State=#state{host_tokens=undefined,
buffer=Buffer, transport=Transport}) ->
diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl
index 8653efe..d074efa 100644
--- a/src/cowboy_req.erl
+++ b/src/cowboy_req.erl
@@ -105,6 +105,7 @@
%% Private setter/getter API.
-export([set_host/4]).
-export([set_connection/2]).
+-export([add_header/3]).
%% Misc API.
-export([compact/1]).
@@ -928,6 +929,12 @@ set_connection(RawConnection, Req=#http_req{headers=Headers}) ->
ConnAtom = cowboy_http:connection_to_atom(ConnTokens),
Req3#http_req{connection=ConnAtom}.
+%% @private
+-spec add_header(cowboy_http:header(), binary(), Req)
+ -> Req when Req::req().
+add_header(Name, Value, Req=#http_req{headers=Headers}) ->
+ Req#http_req{headers=[{Name, Value}|Headers]}.
+
%% Misc API.
%% @doc Compact the request data by removing all non-system information.