pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43666?usp=email )
(
2 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: smf: Move HTTP2 hdr block compressor helpers to HTTP2_Functions.ttcn ......................................................................
smf: Move HTTP2 hdr block compressor helpers to HTTP2_Functions.ttcn
Change-Id: I5a4fffd4c26bde78340612fe024dc54c918885ab --- M library/HTTP2_Functions.ttcn M library/HTTP2_Server_Emulation.ttcn M smf/SMF_Session_CT_5G.ttcn 3 files changed, 38 insertions(+), 56 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved
diff --git a/library/HTTP2_Functions.ttcn b/library/HTTP2_Functions.ttcn index 307938b..2b8f16f 100644 --- a/library/HTTP2_Functions.ttcn +++ b/library/HTTP2_Functions.ttcn @@ -7,6 +7,40 @@ import from HTTP2_Types all; import from HTTP2_Templates all;
+function f_HTTP2_header_block_encode(HTTP2_header_block hb) return octetstring +{ + var HTTP2_comp_context ctx; + var octetstring data := ''O; + var integer rc; + + ctx := HTTP2_comp_context_init(); + rc := HTTP2_comp_context_encode(ctx, hb, data); + HTTP2_comp_context_free(ctx); + if (rc != 0) { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, + log2str("HTTP2_comp_context_encode returned ", rc)); + } + return data; +} + +function f_HTTP2_header_block_decode(octetstring header_block_fragment) +return HTTP2_header_block +{ + var HTTP2_comp_context ctx; + var HTTP2_header_block pl_hblock; + var integer rc; + + ctx := HTTP2_comp_context_init(); + rc := HTTP2_comp_context_decode(ctx, pl_hblock, header_block_fragment); + HTTP2_comp_context_free(ctx); + if (rc != 0) { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, + log2str("HTTP2_comp_context_decode returned ", rc)); + } + + return pl_hblock; +} + function f_HTTP2_header_list_find_header(HTTP2_header_list headers, charstring header_name) return template (omit) charstring { for (var integer i := 0; i < lengthof(headers); i := i + 1) { diff --git a/library/HTTP2_Server_Emulation.ttcn b/library/HTTP2_Server_Emulation.ttcn index 779d7f3..7342f83 100644 --- a/library/HTTP2_Server_Emulation.ttcn +++ b/library/HTTP2_Server_Emulation.ttcn @@ -20,6 +20,7 @@ import from Socket_API_Definitions all;
import from HTTP2_Templates all; +import from HTTP2_Functions all;
import from Native_Functions all; import from Misc_Helpers all; @@ -133,44 +134,6 @@ conn.state := state }
-private function f_HTTP2_Server_Conn_comp_decode(inout HTTP2_Server_Conn conn, octetstring header_block_fragment) -return HTTP2_header_block -{ - var HTTP2_header_block pl_hblock; - var HTTP2_comp_context ctx; - var integer rc; - - ctx := HTTP2_comp_context_init(); - rc := HTTP2_comp_context_decode(ctx, pl_hblock, header_block_fragment); - HTTP2_comp_context_free(ctx); - if (rc != 0) { - Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, - log2str(f_HTTP2_Server_Conn_str(conn), - ": HTTP2_comp_context_decode returned ", rc)); - } - - return pl_hblock; -} - -private function f_HTTP2_Server_Conn_comp_encode(inout HTTP2_Server_Conn conn, HTTP2_header_block hb) -return octetstring -{ - var octetstring pl_frame_data; - var HTTP2_comp_context ctx; - var integer rc; - - ctx := HTTP2_comp_context_init(); - rc := HTTP2_comp_context_encode(ctx, hb, pl_frame_data); - HTTP2_comp_context_free(ctx); - if (rc != 0) { - Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, - log2str(f_HTTP2_Server_Conn_str(conn), - ": HTTP2_comp_context_encode returned ", rc)); - } - - return pl_frame_data; -} - /*********************************************************************** * Main Emulation Component (HTTP2 Server) ***********************************************************************/ @@ -352,7 +315,7 @@ }
var HTTP2_header_block hb; - hb := f_HTTP2_Server_Conn_comp_decode(conn, http2_rx.frame.header_frame.header_block_fragment); + hb := f_HTTP2_header_block_decode(http2_rx.frame.header_frame.header_block_fragment); /* TODO: store header in Conn or send to ConNHdlr? */ log(f_HTTP2_Server_Conn_str(conn), ": Decompressed header: ", hb); if (not http2_rx.frame.header_frame.end_stream_flag) { @@ -461,7 +424,7 @@
/* Send Header: */ f_HTTP2_Msg_append_hdr_content_length(http2_msg); - var octetstring hdr_enc := f_HTTP2_Server_Conn_comp_encode(conn_table[idx], http2_msg.hb); + var octetstring hdr_enc := f_HTTP2_header_block_encode(http2_msg.hb); http2_frame := ts_HTTP2_Frame_Header(http2_msg.stream_id, end_stream_flag := not ispresent(http2_msg.body), end_header_flag := true, diff --git a/smf/SMF_Session_CT_5G.ttcn b/smf/SMF_Session_CT_5G.ttcn index e7e8f62..f83c6fd 100644 --- a/smf/SMF_Session_CT_5G.ttcn +++ b/smf/SMF_Session_CT_5G.ttcn @@ -63,21 +63,6 @@ f_http2_adapter_send(ts_HTTP2_Frame_Window_Update(0, 1073741824)); }
-function f_http2_header_block_encode(HTTP2_header_block hb) return octetstring -{ - var HTTP2_comp_context ctx := HTTP2_comp_context_init(); - var integer rc; - var octetstring data := ''O; - - rc := HTTP2_comp_context_encode(ctx, hb, data); - if (rc != 0) { - Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, - log2str("HTTP2_comp_context_encode returned ", rc)); - } - HTTP2_comp_context_free(ctx); - return data; -} - function f_http2_encode_body_multipart_json_5gnas(octetstring json_encoded, octetstring nas_ecnoded, charstring boundary := "=-0EVVjxcWWFYNd1JXh1OQEg==") return octetstring @@ -150,7 +135,7 @@ ts_HTTP2_Hdr_accept_encoding("gzip") }; hb := ts_HTTP2_header_block(pseudo_hdr, hdr_li); - hdr_enc := f_http2_header_block_encode(valueof(hb)); + hdr_enc := f_HTTP2_header_block_encode(valueof(hb)); f_http2_adapter_send(ts_HTTP2_Frame_Header(3, end_stream_flag := false, end_header_flag := true,