From 2f367bf84ac8a46941832d8915cb28c369e4a519 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 26 Jul 2024 11:30:38 -0400 Subject: [PATCH] MT#55283 add helper_arg to dict_iter Change-Id: I0344a74c1d653a42b524612149857845b9815952 --- daemon/call_interfaces.c | 8 ++++---- daemon/control_ng.c | 5 +++-- daemon/control_ng_flags_parser.c | 8 ++++---- include/call_interfaces.h | 4 ++-- include/control_ng.h | 3 ++- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 774809704..46cd2ce2d 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -1318,7 +1318,7 @@ void call_ng_direction_flag(ng_parser_ctx_t *ctx, bencode_item_t *value) int diridx = 0; ctx->parser->list_iter(ctx, value, call_ng_direction_flag_iter, NULL, &diridx); } -void call_ng_codec_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) { +void call_ng_codec_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value, helper_arg arg) { sdp_ng_flags *out = ctx->flags; switch (__csh_lookup(key)) { case CSH_LOOKUP("except"): @@ -1432,7 +1432,7 @@ static void call_ng_received_from_iter(ng_parser_ctx_t *ctx, str *key, helper_ar break; } } -void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) { +void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value, helper_arg arg) { str s = STR_NULL; sdp_ng_flags *out = ctx->flags; const ng_parser_t *parser = ctx->parser; @@ -1520,7 +1520,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) { out->digit = s.s[0]; break; case CSH_LOOKUP("codec"): - parser->dict_iter(ctx, value, call_ng_codec_flags); + parser->dict_iter(ctx, value, call_ng_codec_flags, NULL); break; case CSH_LOOKUP("command"): break; @@ -2011,7 +2011,7 @@ static void call_ng_process_flags(sdp_ng_flags *out, ng_parser_ctx_t *ctx, enum call_ng_flags_init(out, opmode); ctx->opmode = opmode; ctx->flags = out; - ctx->parser->dict_iter(ctx, ctx->req, call_ng_main_flags); + ctx->parser->dict_iter(ctx, ctx->req, call_ng_main_flags, NULL); } static void ng_sdp_attr_manipulations_free(struct sdp_manipulations * array[__MT_MAX]) { diff --git a/daemon/control_ng.c b/daemon/control_ng.c index 1952fa661..a12f9fafa 100644 --- a/daemon/control_ng.c +++ b/daemon/control_ng.c @@ -80,7 +80,8 @@ typedef struct ng_ctx { static void bencode_dict_iter(ng_parser_ctx_t *ctx, bencode_item_t *input, - void (*callback)(ng_parser_ctx_t *, str *key, bencode_item_t *value)) + void (*callback)(ng_parser_ctx_t *, str *key, bencode_item_t *value, helper_arg), + helper_arg arg) { if (input->type != BENCODE_DICTIONARY) return; @@ -95,7 +96,7 @@ static void bencode_dict_iter(ng_parser_ctx_t *ctx, bencode_item_t *input, if (!bencode_get_str(key, &k)) continue; - callback(ctx, &k, value); + callback(ctx, &k, value, arg); } } static bool bencode_is_list(bencode_item_t *arg) { diff --git a/daemon/control_ng_flags_parser.c b/daemon/control_ng_flags_parser.c index cd328d1f9..488063c58 100644 --- a/daemon/control_ng_flags_parser.c +++ b/daemon/control_ng_flags_parser.c @@ -117,7 +117,7 @@ static bool parse_received_from(str * key, str * val, bencode_buffer_t * buf, bencode_list_add_str(item, &ipfamily); bencode_list_add_str(item, &s); - call_ng_main_flags(ctx, &STR_CONST("received-from"), item); + call_ng_main_flags(ctx, &STR_CONST("received-from"), item, NULL); return true; } return false; @@ -135,7 +135,7 @@ static bool parse_codec_to_dict(str * key, str * val, const char *cmp1, const ch return false; } - call_ng_codec_flags(ctx, &STR(dictstr), bencode_str(buf, &s)); + call_ng_codec_flags(ctx, &STR(dictstr), bencode_str(buf, &s), NULL); return true; } @@ -172,7 +172,7 @@ static void parse_transports(ng_parser_ctx_t *ctx, bencode_buffer_t *buf, const char * val = transports[transport & 0x007]; if (!val) return; - call_ng_main_flags(ctx, &STR_CONST("transport-protocol"), bencode_string(buf, val)); + call_ng_main_flags(ctx, &STR_CONST("transport-protocol"), bencode_string(buf, val), NULL); } #if 0 @@ -318,7 +318,7 @@ generic: call_ng_flags_flags(ctx, &key, NULL); /* generic flags with value, but no particular processing */ else - call_ng_main_flags(ctx, &key, bencode_str(buf, &val)); + call_ng_main_flags(ctx, &key, bencode_str(buf, &val), NULL); next:; } diff --git a/include/call_interfaces.h b/include/call_interfaces.h index 9228678af..8212a7ffe 100644 --- a/include/call_interfaces.h +++ b/include/call_interfaces.h @@ -286,8 +286,8 @@ void call_interfaces_free(void); void call_interfaces_timer(void); void call_ng_flags_flags(ng_parser_ctx_t *, str *s, helper_arg dummy); -void call_ng_main_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value); -void call_ng_codec_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value); +void call_ng_main_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value, helper_arg); +void call_ng_codec_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value, helper_arg); void call_ng_direction_flag(ng_parser_ctx_t *, bencode_item_t *value); INLINE struct sdp_manipulations *sdp_manipulations_get_by_id(const sdp_ng_flags *f, enum media_type id) { diff --git a/include/control_ng.h b/include/control_ng.h index ef6995866..095e65d80 100644 --- a/include/control_ng.h +++ b/include/control_ng.h @@ -109,7 +109,8 @@ typedef union { struct ng_parser { str *(*collapse)(bencode_item_t *root, str *out); void (*dict_iter)(ng_parser_ctx_t *, bencode_item_t *, - void (*callback)(ng_parser_ctx_t *, str *, bencode_item_t *)); + void (*callback)(ng_parser_ctx_t *, str *, bencode_item_t *, helper_arg), + helper_arg); bool (*is_list)(bencode_item_t *); void (*list_iter)(ng_parser_ctx_t *, bencode_item_t *input, void (*str_callback)(ng_parser_ctx_t *, str *key, helper_arg),