aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Boberg <[email protected]>2020-09-30 22:35:55 +0900
committerLoïc Hoguin <[email protected]>2020-10-23 13:06:59 +0200
commitc20c37dec04f6d27382c7e754f2ba74d4faec517 (patch)
tree937833bd11ff46613e951a7a20b9eee56c56fdfe
parentbe9e57032f95fe8a2d8403ca792345770cdaa8b1 (diff)
downloadcowlib-c20c37dec04f6d27382c7e754f2ba74d4faec517.tar.gz
cowlib-c20c37dec04f6d27382c7e754f2ba74d4faec517.tar.bz2
cowlib-c20c37dec04f6d27382c7e754f2ba74d4faec517.zip
Add cow_http2_machine:get_remote_settings/12.10.0
LH: I've updated the code to include enable_connect_protocol conditionally depending on the endpoint.
-rw-r--r--src/cow_http2_machine.erl19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/cow_http2_machine.erl b/src/cow_http2_machine.erl
index 4da7cdf..2d7fbf5 100644
--- a/src/cow_http2_machine.erl
+++ b/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;