Browse Source

Apply the received SETTINGS frame

Loïc Hoguin 8 years ago
parent
commit
18e2d684b3
1 changed files with 3 additions and 3 deletions
  1. 3 3
      src/cowboy_http2.erl

+ 3 - 3
src/cowboy_http2.erl

@@ -359,10 +359,10 @@ frame(State=#state{client_streamid=LastStreamID}, {rst_stream, StreamID, _})
 frame(State, {rst_stream, StreamID, Reason}) ->
 frame(State, {rst_stream, StreamID, Reason}) ->
 	stream_terminate(State, StreamID, {stream_error, Reason, 'Stream reset requested by client.'});
 	stream_terminate(State, StreamID, {stream_error, Reason, 'Stream reset requested by client.'});
 %% SETTINGS frame.
 %% SETTINGS frame.
-frame(State=#state{socket=Socket, transport=Transport}, {settings, _Settings}) ->
-	%% @todo Apply SETTINGS.
+frame(State=#state{socket=Socket, transport=Transport, remote_settings=Settings0},
+		{settings, Settings}) ->
 	Transport:send(Socket, cow_http2:settings_ack()),
 	Transport:send(Socket, cow_http2:settings_ack()),
-	State;
+	State#state{remote_settings=maps:merge(Settings0, Settings)};
 %% Ack for a previously sent SETTINGS frame.
 %% Ack for a previously sent SETTINGS frame.
 frame(State=#state{next_settings=_NextSettings}, settings_ack) ->
 frame(State=#state{next_settings=_NextSettings}, settings_ack) ->
 	%% @todo Apply SETTINGS that require synchronization.
 	%% @todo Apply SETTINGS that require synchronization.