|
|
|
|
@ -3353,6 +3353,20 @@ static void monologue_bundle_check_consistency(struct call_monologue *ml) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// check to see if all bundle heads are also bundled
|
|
|
|
|
__attribute__((nonnull(1)))
|
|
|
|
|
static void monologue_bundle_check_heads(struct call_monologue *ml) {
|
|
|
|
|
for (unsigned int i = 0; i < ml->medias->len; i++) {
|
|
|
|
|
__auto_type media = ml->medias->pdata[i];
|
|
|
|
|
if (!media)
|
|
|
|
|
continue;
|
|
|
|
|
if (!media->bundle)
|
|
|
|
|
continue;
|
|
|
|
|
if (!media->bundle->bundle)
|
|
|
|
|
media->bundle = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
__attribute__((nonnull(1, 2)))
|
|
|
|
|
static void monologue_bundle_accept(struct call_monologue *ml, sdp_ng_flags *flags) {
|
|
|
|
|
if (!ML_ISSET(ml, BUNDLE))
|
|
|
|
|
@ -3394,6 +3408,7 @@ static void monologue_bundle_accept(struct call_monologue *ml, sdp_ng_flags *fla
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
monologue_bundle_check_consistency(ml);
|
|
|
|
|
monologue_bundle_check_heads(ml);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* called with call->master_lock held in W */
|
|
|
|
|
|