Just checking - do you need to update the README too? /O
> On 21 Oct 2020, at 20:05, Richard Fuchs <rfu...@sipwise.com> wrote: > > Module: kamailio > Branch: master > Commit: 8bf1935c4e9cb0081784dbd8bd951148b8865381 > URL: > https://github.com/kamailio/kamailio/commit/8bf1935c4e9cb0081784dbd8bd951148b8865381 > > Author: Richard Fuchs <rfu...@sipwise.com> > Committer: Richard Fuchs <rfu...@sipwise.com> > Date: 2020-10-21T14:05:20-04:00 > > rtpengine: support new codec flags > > Adds explicit support for codec-set and codec-except. > > Also eliminates code redundancy. > > --- > > Modified: src/modules/rtpengine/rtpengine.c > > --- > > Diff: > https://github.com/kamailio/kamailio/commit/8bf1935c4e9cb0081784dbd8bd951148b8865381.diff > Patch: > https://github.com/kamailio/kamailio/commit/8bf1935c4e9cb0081784dbd8bd951148b8865381.patch > > --- > > diff --git a/src/modules/rtpengine/rtpengine.c > b/src/modules/rtpengine/rtpengine.c > index 95726fa4a1..c3e7e75601 100644 > --- a/src/modules/rtpengine/rtpengine.c > +++ b/src/modules/rtpengine/rtpengine.c > @@ -119,7 +119,8 @@ struct ng_flags_parse { > int via, to, packetize, transport, directional; > bencode_item_t *dict, *flags, *direction, *replace, *rtcp_mux, *sdes, > *t38, > - *codec, *codec_strip, *codec_offer, *codec_transcode, > *codec_mask; > + *codec, *codec_strip, *codec_offer, *codec_transcode, > *codec_mask, > + *codec_set, *codec_except; > str call_id, from_tag, to_tag; > }; > > @@ -2082,6 +2083,29 @@ static const char *transports[] = { > [0x06] = "UDP/TLS/RTP/SAVPF", > }; > > +static int parse_codec_flag(struct ng_flags_parse *ng_flags, const str *key, > const str *val, > + const char *cmp1, const char *cmp2, > + bencode_item_t **dictp) > +{ > + str s; > + > + if (!str_key_val_prefix(key, cmp1, val, &s)) { > + if (!cmp2) > + return 0; > + if (!str_key_val_prefix(key, cmp2, val, &s)) > + return 0; > + } > + > + if (!*dictp) { > + *dictp = bencode_list(ng_flags->dict->buffer); > + bencode_dictionary_add(ng_flags->codec, "transcode", > + *dictp); > + } > + bencode_list_add_str(*dictp, &s); > + > + return 1; > +} > + > static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, > enum rtpe_operation *op, > const char *flags_str) > { > @@ -2135,47 +2159,18 @@ static int parse_flags(struct ng_flags_parse > *ng_flags, struct sip_msg *msg, enu > goto next; > } > > - if (str_key_val_prefix(&key, "transcode", &val, &s) > - || str_key_val_prefix(&key, "codec-transcode", > &val, &s)) > - { > - if (!ng_flags->codec_transcode) { > - ng_flags->codec_transcode = > bencode_list(ng_flags->dict->buffer); > - bencode_dictionary_add(ng_flags->codec, > "transcode", > - ng_flags->codec_transcode); > - } > - bencode_list_add_str(ng_flags->codec_transcode, &s); > + if (parse_codec_flag(ng_flags, &key, &val, "transcode", > "codec-transcode", &ng_flags->codec_transcode)) > goto next; > - } > - > - if (str_key_val_prefix(&key, "codec-strip", &val, &s)) { > - if (!ng_flags->codec_strip) { > - ng_flags->codec_strip = > bencode_list(ng_flags->dict->buffer); > - bencode_dictionary_add(ng_flags->codec, "strip", > - ng_flags->codec_strip); > - } > - bencode_list_add_str(ng_flags->codec_strip, &s); > + if (parse_codec_flag(ng_flags, &key, &val, "codec-strip", NULL, > &ng_flags->codec_strip)) > goto next; > - } > - > - if (str_key_val_prefix(&key, "codec-offer", &val, &s)) { > - if (!ng_flags->codec_offer) { > - ng_flags->codec_offer = > bencode_list(ng_flags->dict->buffer); > - bencode_dictionary_add(ng_flags->codec, "offer", > - ng_flags->codec_offer); > - } > - bencode_list_add_str(ng_flags->codec_offer, &s); > + if (parse_codec_flag(ng_flags, &key, &val, "codec-offer", NULL, > &ng_flags->codec_offer)) > goto next; > - } > - > - if (str_key_val_prefix(&key, "codec-mask", &val, &s)) { > - if (!ng_flags->codec_mask) { > - ng_flags->codec_mask = > bencode_list(ng_flags->dict->buffer); > - bencode_dictionary_add(ng_flags->codec, "mask", > - ng_flags->codec_mask); > - } > - bencode_list_add_str(ng_flags->codec_mask, &s); > + if (parse_codec_flag(ng_flags, &key, &val, "codec-mask", NULL, > &ng_flags->codec_mask)) > + goto next; > + if (parse_codec_flag(ng_flags, &key, &val, "codec-set", NULL, > &ng_flags->codec_set)) > + goto next; > + if (parse_codec_flag(ng_flags, &key, &val, "codec-except", > NULL, &ng_flags->codec_except)) > goto next; > - } > > /* check for specially handled items */ > switch (key.len) { > > > _______________________________________________ > Kamailio (SER) - Development Mailing List > sr-dev@lists.kamailio.org > https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev _______________________________________________ Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev