Browse Source

Add cow_http2_machine:get_remote_settings/1

LH: I've updated the code to include enable_connect_protocol
conditionally depending on the endpoint.
Jonas Boberg 4 years ago
parent
commit
c20c37dec0
1 changed files with 19 additions and 0 deletions
  1. 19 0
      src/cow_http2_machine.erl

+ 19 - 0
src/cow_http2_machine.erl

@@ -31,6 +31,7 @@
 -export([reset_stream/2]).
 -export([get_connection_local_buffer_size/1]).
 -export([get_local_setting/2]).
+-export([get_remote_settings/1]).
 -export([get_last_streamid/1]).
 -export([get_stream_local_buffer_size/2]).
 -export([get_stream_local_state/2]).
@@ -1495,6 +1496,24 @@ get_connection_local_buffer_size(#http2_machine{streams=Streams}) ->
 get_local_setting(Key, #http2_machine{local_settings=Settings}) ->
 	maps:get(Key, Settings, default_setting_value(Key)).
 
+-spec get_remote_settings(http2_machine()) -> map().
+get_remote_settings(#http2_machine{mode=Mode, remote_settings=Settings}) ->
+	Defaults0 = #{
+		header_table_size => default_setting_value(header_table_size),
+		enable_push => default_setting_value(enable_push),
+		max_concurrent_streams => default_setting_value(max_concurrent_streams),
+		initial_window_size => default_setting_value(initial_window_size),
+		max_frame_size => default_setting_value(max_frame_size),
+		max_header_list_size => default_setting_value(max_header_list_size)
+	},
+	Defaults = case Mode of
+		server ->
+			Defaults0#{enable_connect_protocol => default_setting_value(enable_connect_protocol)};
+		client ->
+			Defaults0
+	end,
+	maps:merge(Defaults, Settings).
+
 default_setting_value(header_table_size) -> 4096;
 default_setting_value(enable_push) -> true;
 default_setting_value(max_concurrent_streams) -> infinity;