diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 921530129..d4c187e8c 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -484,22 +484,9 @@ INLINE void call_ngb_hold_ref(call_t *c, ng_buffer *ngb) { ngb->call = obj_get(c); } -INLINE void str_hyphenate(str *s_ori) { - str s; - s = *s_ori; - while (s.len) { - if (!str_chr_str(&s, &s, ' ')) - break; - *s.s = '-'; - str_shift(&s, 1); - } -} - INLINE void ng_sdes_option(str *s, unsigned int idx, helper_arg arg) { sdp_ng_flags *out = arg.flags; - str_hyphenate(s); - /* Accept only certain individual crypto suites */ if (call_ng_flags_prefix(s, "only-", call_ng_flags_str_ht, &out->sdes_only)) return; @@ -734,7 +721,6 @@ INLINE void ng_el_option(str *s, unsigned int idx, helper_arg arg) { #ifdef WITH_TRANSCODING INLINE void ng_t38_option(str *s, unsigned int idx, helper_arg arg) { sdp_ng_flags *out = arg.flags; - str_hyphenate(s); switch (__csh_lookup(s)) { case CSH_LOOKUP("decode"): out->t38_decode = 1; @@ -747,34 +733,54 @@ INLINE void ng_t38_option(str *s, unsigned int idx, helper_arg arg) { break; case CSH_LOOKUP("no-ecm"): case CSH_LOOKUP("no-ECM"): + case CSH_LOOKUP("no ecm"): + case CSH_LOOKUP("no ECM"): out->t38_no_ecm = 1; break; case CSH_LOOKUP("no-V17"): case CSH_LOOKUP("no-V.17"): case CSH_LOOKUP("no-v17"): case CSH_LOOKUP("no-v.17"): + case CSH_LOOKUP("no V17"): + case CSH_LOOKUP("no V.17"): + case CSH_LOOKUP("no v17"): + case CSH_LOOKUP("no v.17"): out->t38_no_v17 = 1; break; case CSH_LOOKUP("no-V.27ter"): case CSH_LOOKUP("no-V27ter"): case CSH_LOOKUP("no-v.27ter"): case CSH_LOOKUP("no-v27ter"): + case CSH_LOOKUP("no V.27ter"): + case CSH_LOOKUP("no V27ter"): + case CSH_LOOKUP("no v.27ter"): + case CSH_LOOKUP("no v27ter"): out->t38_no_v27ter = 1; break; case CSH_LOOKUP("no-V29"): case CSH_LOOKUP("no-V.29"): case CSH_LOOKUP("no-v29"): case CSH_LOOKUP("no-v.29"): + case CSH_LOOKUP("no V29"): + case CSH_LOOKUP("no V.29"): + case CSH_LOOKUP("no v29"): + case CSH_LOOKUP("no v.29"): out->t38_no_v29 = 1; break; case CSH_LOOKUP("no-V34"): case CSH_LOOKUP("no-V.34"): case CSH_LOOKUP("no-v34"): case CSH_LOOKUP("no-v.34"): + case CSH_LOOKUP("no V34"): + case CSH_LOOKUP("no V.34"): + case CSH_LOOKUP("no v34"): + case CSH_LOOKUP("no v.34"): out->t38_no_v34 = 1; break; case CSH_LOOKUP("no-IAF"): case CSH_LOOKUP("no-iaf"): + case CSH_LOOKUP("no IAF"): + case CSH_LOOKUP("no iaf"): out->t38_no_iaf = 1; break; case CSH_LOOKUP("FEC"): @@ -868,33 +874,41 @@ static void call_ng_flags_moh(const ng_parser_t *parser, str *key, parser_arg va } static void call_ng_flags_replace(str *s, unsigned int idx, helper_arg arg) { sdp_ng_flags *out = arg.flags; - str_hyphenate(s); switch (__csh_lookup(s)) { case CSH_LOOKUP("force-increment-sdp-ver"): + case CSH_LOOKUP("force-increment-SDP-ver"): + case CSH_LOOKUP("force increment sdp ver"): + case CSH_LOOKUP("force increment SDP ver"): out->force_inc_sdp_ver = 1; break; case CSH_LOOKUP("origin"): out->replace_origin = 1; break; + case CSH_LOOKUP("origin full"): case CSH_LOOKUP("origin-full"): case CSH_LOOKUP("origin_full"): out->replace_origin_full = 1; break; case CSH_LOOKUP("sdp-version"): case CSH_LOOKUP("SDP-version"): + case CSH_LOOKUP("sdp version"): + case CSH_LOOKUP("SDP version"): out->replace_sdp_version = 1; break; /* TODO: after a while remove silent support for this flag */ case CSH_LOOKUP("session-connection"): + case CSH_LOOKUP("session connection"): ilog(LOG_INFO, "replace-session-connection flag encountered, but not supported anymore."); break; case CSH_LOOKUP("session-name"): + case CSH_LOOKUP("session name"): out->replace_sess_name = 1; break; case CSH_LOOKUP("username"): out->replace_username = 1; break; case CSH_LOOKUP("zero-address"): + case CSH_LOOKUP("zero address"): out->replace_zero_address = 1; break; default: @@ -1022,26 +1036,32 @@ INLINE int call_ng_flags_prefix(str *s_ori, const char *prefix, void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { sdp_ng_flags *out = arg.flags; - str_hyphenate(s); - switch (__csh_lookup(s)) { case CSH_LOOKUP("all"): out->all = ALL_ALL; break; case CSH_LOOKUP("allow-asymmetric-codecs"): case CSH_LOOKUP("allow-asymmetric-codec"): + case CSH_LOOKUP("allow asymmetric codecs"): + case CSH_LOOKUP("allow asymmetric codec"): out->allow_asymmetric_codecs = 1; break; case CSH_LOOKUP("allow-no-codec-media"): case CSH_LOOKUP("allow-no-codec-medias"): case CSH_LOOKUP("allow-empty-codec-media"): case CSH_LOOKUP("allow-empty-codec-medias"): + case CSH_LOOKUP("allow no codec media"): + case CSH_LOOKUP("allow no codec medias"): + case CSH_LOOKUP("allow empty codec media"): + case CSH_LOOKUP("allow empty codec medias"): out->allow_no_codec_media = 1; break; case CSH_LOOKUP("allow-transcoding"): + case CSH_LOOKUP("allow transcoding"): out->allow_transcoding = 1; break; case CSH_LOOKUP("always-transcode"):; + case CSH_LOOKUP("always transcode"):; static const str str_all = STR_CONST("all"); call_ng_flags_esc_str_list((str *) &str_all, 0, &out->codec_accept); break; @@ -1049,22 +1069,30 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { out->asymmetric = 1; break; case CSH_LOOKUP("asymmetric-codecs"): + case CSH_LOOKUP("asymmetric codecs"): ilog(LOG_INFO, "Ignoring obsolete flag `asymmetric-codecs`"); break; case CSH_LOOKUP("audio-player"): + case CSH_LOOKUP("audio player"): case CSH_LOOKUP("player"): out->audio_player = AP_TRANSCODING; break; case CSH_LOOKUP("block-dtmf"): case CSH_LOOKUP("block-DTMF"): + case CSH_LOOKUP("block dtmf"): + case CSH_LOOKUP("block DTMF"): out->block_dtmf = 1; break; case CSH_LOOKUP("block-egress"): + case CSH_LOOKUP("block egress"): out->block_egress = 1; break; case CSH_LOOKUP("block-short"): case CSH_LOOKUP("block-shorts"): case CSH_LOOKUP("block-short-packets"): + case CSH_LOOKUP("block short"): + case CSH_LOOKUP("block shorts"): + case CSH_LOOKUP("block short packets"): out->block_short = 1; break; case CSH_LOOKUP("debug"): @@ -1073,21 +1101,26 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { break; case CSH_LOOKUP("detect-DTMF"): case CSH_LOOKUP("detect-dtmf"): + case CSH_LOOKUP("detect DTMF"): + case CSH_LOOKUP("detect dtmf"): out->detect_dtmf = 1; break; case CSH_LOOKUP("directional"): out->directional = 1; break; case CSH_LOOKUP("discard-recording"): + case CSH_LOOKUP("discard recording"): out->discard_recording = 1; break; case CSH_LOOKUP("early-media"): + case CSH_LOOKUP("early media"): out->early_media = 1; break; case CSH_LOOKUP("egress"): out->egress = 1; break; case CSH_LOOKUP("exclude-recording"): + case CSH_LOOKUP("exclude recording"): out->exclude_recording = 1; break; case CSH_LOOKUP("fatal"): @@ -1098,19 +1131,28 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { break; case CSH_LOOKUP("full-rtcp-attribute"): case CSH_LOOKUP("full-RTCP-attribute"): + case CSH_LOOKUP("full rtcp attribute"): + case CSH_LOOKUP("full RTCP attribute"): out->full_rtcp_attr = 1; break; case CSH_LOOKUP("generate-mid"): + case CSH_LOOKUP("generate mid"): out->generate_mid = 1; break; case CSH_LOOKUP("generate-RTCP"): case CSH_LOOKUP("generate-rtcp"): + case CSH_LOOKUP("generate RTCP"): + case CSH_LOOKUP("generate rtcp"): out->generate_rtcp = 1; break; case CSH_LOOKUP("ICE-reject"): case CSH_LOOKUP("ice-reject"): case CSH_LOOKUP("reject-ice"): case CSH_LOOKUP("reject-ICE"): + case CSH_LOOKUP("ICE reject"): + case CSH_LOOKUP("ice reject"): + case CSH_LOOKUP("reject ice"): + case CSH_LOOKUP("reject ICE"): out->ice_reject = 1; break; case CSH_LOOKUP("inactive"): @@ -1118,55 +1160,78 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { break; case CSH_LOOKUP("inject-DTMF"): case CSH_LOOKUP("inject-dtmf"): + case CSH_LOOKUP("inject DTMF"): + case CSH_LOOKUP("inject dtmf"): out->inject_dtmf = 1; break; case CSH_LOOKUP("loop-protect"): + case CSH_LOOKUP("loop protect"): out->loop_protect = 1; break; case CSH_LOOKUP("media-handover"): + case CSH_LOOKUP("media handover"): out->media_handover = 1; break; case CSH_LOOKUP("mirror-RTCP"): case CSH_LOOKUP("mirror-rtcp"): case CSH_LOOKUP("RTCP-mirror"): case CSH_LOOKUP("rtcp-mirror"): + case CSH_LOOKUP("mirror RTCP"): + case CSH_LOOKUP("mirror rtcp"): + case CSH_LOOKUP("RTCP mirror"): + case CSH_LOOKUP("rtcp mirror"): out->rtcp_mirror = 1; break; case CSH_LOOKUP("NAT-wait"): case CSH_LOOKUP("nat-wait"): + case CSH_LOOKUP("NAT wait"): + case CSH_LOOKUP("nat wait"): out->nat_wait = 1; break; case CSH_LOOKUP("new-branch"): + case CSH_LOOKUP("new branch"): out->new_branch = 1; break; case CSH_LOOKUP("no-codec-renegotiation"): case CSH_LOOKUP("reuse-codecs"): + case CSH_LOOKUP("no codec renegotiation"): + case CSH_LOOKUP("reuse codecs"): out->reuse_codec = 1; break; case CSH_LOOKUP("no-passthrough"): + case CSH_LOOKUP("no passthrough"): out->passthrough_off = 1; break; case CSH_LOOKUP("no-player"): case CSH_LOOKUP("no-audio-player"): + case CSH_LOOKUP("no player"): + case CSH_LOOKUP("no audio player"): out->audio_player = AP_OFF; break; case CSH_LOOKUP("no-port-latching"): + case CSH_LOOKUP("no port latching"): out->no_port_latching = 1; break; case CSH_LOOKUP("no-redis-update"): + case CSH_LOOKUP("no redis update"): out->no_redis_update = 1; break; case CSH_LOOKUP("no-rtcp-attribute"): case CSH_LOOKUP("no-RTCP-attribute"): + case CSH_LOOKUP("no rtcp attribute"): + case CSH_LOOKUP("no RTCP attribute"): out->no_rtcp_attr = 1; break; case CSH_LOOKUP("no-jitter-buffer"): + case CSH_LOOKUP("no jitter buffer"): out->disable_jb = 1; break; case CSH_LOOKUP("original-sendrecv"): + case CSH_LOOKUP("original sendrecv"): out->original_sendrecv = 1; break; case CSH_LOOKUP("pad-crypto"): + case CSH_LOOKUP("pad crypto"): out->sdes_pad = 1; break; case CSH_LOOKUP("passthrough"): @@ -1174,35 +1239,46 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { break; case CSH_LOOKUP("pierce-NAT"): case CSH_LOOKUP("pierce-nat"): + case CSH_LOOKUP("pierce NAT"): + case CSH_LOOKUP("pierce nat"): out->pierce_nat = 1; break; case CSH_LOOKUP("port-latching"): + case CSH_LOOKUP("port latching"): out->port_latching = 1; break; case CSH_LOOKUP("provisional"): out->provisional = 1; break; case CSH_LOOKUP("record-call"): + case CSH_LOOKUP("record call"): out->record_call = 1; break; case CSH_LOOKUP("recording-vsc"): case CSH_LOOKUP("recording-VSC"): + case CSH_LOOKUP("recording vsc"): + case CSH_LOOKUP("recording VSC"): out->recording_vsc = 1; break; case CSH_LOOKUP("recording-announcement"): + case CSH_LOOKUP("recording announcement"): out->recording_announcement = 1; break; case CSH_LOOKUP("reorder-codecs"): + case CSH_LOOKUP("reorder codecs"): ilog(LOG_INFO, "Ignoring obsolete flag `reorder-codecs`"); break; case CSH_LOOKUP("reset"): out->reset = 1; break; case CSH_LOOKUP("single-codec"): + case CSH_LOOKUP("single codec"): out->single_codec = 1; break; case CSH_LOOKUP("SIP-source-address"): case CSH_LOOKUP("sip-source-address"): + case CSH_LOOKUP("SIP source address"): + case CSH_LOOKUP("sip source address"): out->trust_address = 0; break; case CSH_LOOKUP("SIPREC"): @@ -1211,21 +1287,29 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { break; case CSH_LOOKUP("skip-recording-db"): case CSH_LOOKUP("skip-recording-database"): + case CSH_LOOKUP("skip recording db"): + case CSH_LOOKUP("skip recording database"): out->skip_recording_db = 1; break; case CSH_LOOKUP("static-codec"): case CSH_LOOKUP("static-codecs"): + case CSH_LOOKUP("static codec"): + case CSH_LOOKUP("static codecs"): out->static_codecs = 1; break; case CSH_LOOKUP("strict-source"): + case CSH_LOOKUP("strict source"): out->strict_source = 1; break; case CSH_LOOKUP("strip-extmap"): + case CSH_LOOKUP("strip extmap"): out->strip_extmap = 1; break; case CSH_LOOKUP("symmetric-codecs"): + case CSH_LOOKUP("symmetric codecs"): ilog(LOG_INFO, "Ignoring obsolete flag `symmetric-codecs`"); break; + case CSH_LOOKUP("to tag"): case CSH_LOOKUP("to-tag"): case CSH_LOOKUP("to_tag"): /* including the “To” tag in the “delete” message allows to be more selective @@ -1234,9 +1318,12 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) { break; case CSH_LOOKUP("trickle-ICE"): case CSH_LOOKUP("trickle-ice"): + case CSH_LOOKUP("trickle ICE"): + case CSH_LOOKUP("trickle ice"): out->trickle_ice = 1; break; case CSH_LOOKUP("trust-address"): + case CSH_LOOKUP("trust address"): out->trust_address = 1; break; case CSH_LOOKUP("unidirectional"):