This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb-cowlib.git

commit e2d7749f61b89cc6f8779ba66a5a8ab0fe85c827
Author: Loïc Hoguin <es...@ninenines.eu>
AuthorDate: Wed Jun 25 11:44:09 2025 +0200

    Update to most recent WebTransport draft
    
    WEBTRANSPORT -> WT in most places. Only ENABLE_WEBTRANSPORT
    remains (since it is a draft-02 setting that was later removed)
    as well as internal functions and atoms about stream headers,
    for greater clarity.
---
 src/cow_http3.erl         | 66 +++++++++++++++++++++++------------------------
 src/cow_http3_machine.erl |  6 ++---
 2 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/src/cow_http3.erl b/src/cow_http3.erl
index f1cb0f7..d950500 100644
--- a/src/cow_http3.erl
+++ b/src/cow_http3.erl
@@ -45,10 +45,10 @@
        enable_connect_protocol => boolean(),
        %% Extensions.
        h3_datagram => boolean(),
-       webtransport_max_sessions => h3_non_neg_integer(),
-       webtransport_initial_max_streams_uni => h3_non_neg_integer(),
-       webtransport_initial_max_streams_bidi => h3_non_neg_integer(),
-       webtransport_initial_max_data => h3_non_neg_integer()
+       wt_max_sessions => h3_non_neg_integer(),
+       wt_initial_max_streams_uni => h3_non_neg_integer(),
+       wt_initial_max_streams_bidi => h3_non_neg_integer(),
+       wt_initial_max_data => h3_non_neg_integer()
 }.
 -export_type([settings/0]).
 
@@ -74,9 +74,9 @@
        | h3_version_fallback
        %% Extensions.
        | h3_datagram_error
-       | webtransport_buffered_stream_rejected
-       | webtransport_session_gone
-       | {webtransport_application_error, wt_app_error_code()}.
+       | wt_buffered_stream_rejected
+       | wt_session_gone
+       | {wt_application_error, wt_app_error_code()}.
 -export_type([error/0]).
 
 -type frame() :: {data, binary()}
@@ -336,18 +336,18 @@ parse_settings_id_val(Rest, Len, Settings, Identifier, 
Value) ->
                16#33 ->
                        {connection_error, h3_settings_error,
                                'The SETTINGS_H3_DATAGRAM value MUST be 0 or 1. 
(RFC9297 2.1.1)'};
-               %% SETTINGS_WEBTRANSPORT_MAX_SESSIONS 
(draft-ietf-webtrans-http3).
+               %% SETTINGS_WT_MAX_SESSIONS (draft-ietf-webtrans-http3).
                16#c671706a ->
-                       parse_settings_key_val(Rest, Len, Settings, 
webtransport_max_sessions, Value);
-               %% SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI 
(draft-ietf-webtrans-http3).
+                       parse_settings_key_val(Rest, Len, Settings, 
wt_max_sessions, Value);
+               %% SETTINGS_WT_INITIAL_MAX_STREAMS_UNI 
(draft-ietf-webtrans-http3).
                16#2b64 ->
-                       parse_settings_key_val(Rest, Len, Settings, 
webtransport_initial_max_streams_uni, Value);
-               %% SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI 
(draft-ietf-webtrans-http3).
+                       parse_settings_key_val(Rest, Len, Settings, 
wt_initial_max_streams_uni, Value);
+               %% SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI 
(draft-ietf-webtrans-http3).
                16#2b65 ->
-                       parse_settings_key_val(Rest, Len, Settings, 
webtransport_initial_max_streams_bidi, Value);
-               %% SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA 
(draft-ietf-webtrans-http3).
+                       parse_settings_key_val(Rest, Len, Settings, 
wt_initial_max_streams_bidi, Value);
+               %% SETTINGS_WT_INITIAL_MAX_DATA (draft-ietf-webtrans-http3).
                16#2b61 ->
-                       parse_settings_key_val(Rest, Len, Settings, 
webtransport_initial_max_data, Value);
+                       parse_settings_key_val(Rest, Len, Settings, 
wt_initial_max_data, Value);
                _ when Identifier < 6 ->
                        {connection_error, h3_settings_error,
                                'HTTP/2 setting not defined for HTTP/3 must be 
rejected. (RFC9114 7.2.4.1)'};
@@ -450,15 +450,15 @@ code_to_error(16#010f) -> h3_connect_error;
 code_to_error(16#0110) -> h3_version_fallback;
 %% Extensions.
 code_to_error(16#33) -> h3_datagram_error;
-code_to_error(16#3994bd84) -> webtransport_buffered_stream_rejected;
-code_to_error(16#170d7b68) -> webtransport_session_gone;
+code_to_error(16#3994bd84) -> wt_buffered_stream_rejected;
+code_to_error(16#170d7b68) -> wt_session_gone;
 code_to_error(Code) when Code >= 16#52e4a40fa8db, Code =< 16#52e5ac983162 ->
        case (Code - 16#21) rem 16#1f of
                0 -> h3_no_error;
                _ ->
                        %% @todo We need tests for this.
                        Shifted = Code - 16#52e4a40fa8db,
-                       {webtransport_application_error,
+                       {wt_application_error,
                                Shifted - Shifted div 16#1f}
        end;
 %% Unknown/reserved error codes must be treated
@@ -521,18 +521,18 @@ settings_payload(Settings) ->
                %% SETTINGS_ENABLE_WEBTRANSPORT (draft-ietf-webtrans-http3-02, 
for compatibility).
                enable_webtransport when Value -> [encode_int(16#2b603742), 
encode_int(1)];
                enable_webtransport -> [encode_int(16#2b603742), encode_int(0)];
-               %% SETTINGS_WEBTRANSPORT_MAX_SESSIONS 
(draft-ietf-webtrans-http3).
-               webtransport_max_sessions when Value =:= 0 -> <<>>;
-               webtransport_max_sessions -> [encode_int(16#c671706a), 
encode_int(Value)];
-               %% SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI 
(draft-ietf-webtrans-http3).
-               webtransport_initial_max_streams_uni when Value =:= 0 -> <<>>;
-               webtransport_initial_max_streams_uni -> [encode_int(16#2b64), 
encode_int(Value)];
-               %% SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI 
(draft-ietf-webtrans-http3).
-               webtransport_initial_max_streams_bidi when Value =:= 0 -> <<>>;
-               webtransport_initial_max_streams_bidi -> [encode_int(16#2b65), 
encode_int(Value)];
-               %% SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA 
(draft-ietf-webtrans-http3).
-               webtransport_initial_max_data when Value =:= 0 -> <<>>;
-               webtransport_initial_max_data -> [encode_int(16#2b61), 
encode_int(Value)]
+               %% SETTINGS_WT_MAX_SESSIONS (draft-ietf-webtrans-http3).
+               wt_max_sessions when Value =:= 0 -> <<>>;
+               wt_max_sessions -> [encode_int(16#c671706a), encode_int(Value)];
+               %% SETTINGS_WT_INITIAL_MAX_STREAMS_UNI 
(draft-ietf-webtrans-http3).
+               wt_initial_max_streams_uni when Value =:= 0 -> <<>>;
+               wt_initial_max_streams_uni -> [encode_int(16#2b64), 
encode_int(Value)];
+               %% SETTINGS_WT_INITIAL_MAX_STREAMS_BIDI 
(draft-ietf-webtrans-http3).
+               wt_initial_max_streams_bidi when Value =:= 0 -> <<>>;
+               wt_initial_max_streams_bidi -> [encode_int(16#2b65), 
encode_int(Value)];
+               %% SETTINGS_WT_INITIAL_MAX_DATA (draft-ietf-webtrans-http3).
+               wt_initial_max_data when Value =:= 0 -> <<>>;
+               wt_initial_max_data -> [encode_int(16#2b61), encode_int(Value)]
        end || {Key, Value} <- maps:to_list(Settings)],
        %% Include one reserved identifier in addition.
        ReservedType = 16#1f * (rand:uniform(148764065110560900) - 1) + 16#21,
@@ -580,9 +580,9 @@ error_to_code(h3_connect_error) -> 16#010f;
 error_to_code(h3_version_fallback) -> 16#0110;
 %% Extensions.
 error_to_code(h3_datagram_error) -> 16#33;
-error_to_code(webtransport_buffered_stream_rejected) -> 16#3994bd84;
-error_to_code(webtransport_session_gone) -> 16#170d7b68;
-error_to_code({webtransport_application_error, AppErrorCode}) ->
+error_to_code(wt_buffered_stream_rejected) -> 16#3994bd84;
+error_to_code(wt_session_gone) -> 16#170d7b68;
+error_to_code({wt_application_error, AppErrorCode}) ->
        16#52e4a40fa8db + AppErrorCode + AppErrorCode div 16#1e.
 
 -spec encode_int(h3_non_neg_integer()) -> binary().
diff --git a/src/cow_http3_machine.erl b/src/cow_http3_machine.erl
index 7a01703..515f87a 100644
--- a/src/cow_http3_machine.erl
+++ b/src/cow_http3_machine.erl
@@ -159,8 +159,8 @@ init_settings(Opts) ->
        %% For compatibility with draft-02.
        S4 = setting_from_opt(S3, Opts, enable_webtransport,
                enable_webtransport, false),
-       setting_from_opt(S4, Opts, webtransport_max_sessions,
-               webtransport_max_sessions, 0).
+       setting_from_opt(S4, Opts, wt_max_sessions,
+               wt_max_sessions, 0).
 
 setting_from_opt(Settings, Opts, OptName, SettingName, Default) ->
        case maps:get(OptName, Opts, Default) of
@@ -469,7 +469,7 @@ headers_process(Stream=#bidi_stream{method=ReqMethod},
                State=#http3_machine{local_settings=LocalSettings},
                IsFin, Type, DecData, Headers0) ->
        case cow_http:process_headers(Headers0, Type, ReqMethod, IsFin, 
LocalSettings) of
-               %% @todo If this is a webtransport request we also need to 
check a few
+               %% @todo If this is a WebTransport request we also need to 
check a few
                %% other things such as h3_datagram, max_sessions and QUIC's 
max_datagram_size options.
                %% @todo So cow_http3_machine needs to know about at least some 
QUIC options.
                {headers, Headers, PseudoHeaders, Len} ->

Reply via email to