diff --git a/daemon/redis.c b/daemon/redis.c index d65cd464d..faa694468 100644 --- a/daemon/redis.c +++ b/daemon/redis.c @@ -1545,7 +1545,9 @@ static int rbl_cb_plts_r(str *s, callback_arg_t dummy, struct redis_list *list, codec_store_add_raw(&med->codecs, rbl_cb_plts_g(s, list, ptr)); return 0; } -static int json_medias(struct call *c, struct redis_list *medias, JsonReader *root_reader) { +static int json_medias(struct call *c, struct redis_list *medias, struct redis_list *tags, + JsonReader *root_reader) +{ unsigned int i; struct redis_hash *rh; struct call_media *med; @@ -1595,6 +1597,9 @@ static int json_medias(struct call *c, struct redis_list *medias, JsonReader *ro json_build_list_cb((callback_arg_t) NULL, c, "payload_types", i, NULL, rbl_cb_plts_r, med, root_reader); /* XXX dtls */ + /* link monologue */ + med->monologue = redis_list_get_ptr(tags, &medias->rh[i], "tag"); + medias->ptrs[i] = med; } @@ -1829,17 +1834,13 @@ static int json_link_streams(struct call *c, struct redis_list *streams, } static int json_link_medias(struct call *c, struct redis_list *medias, - struct redis_list *streams, struct redis_list *maps, struct redis_list *tags, JsonReader *root_reader) + struct redis_list *streams, struct redis_list *maps, JsonReader *root_reader) { for (unsigned int i = 0; i < medias->len; i++) { struct call_media *med = medias->ptrs[i]; - if (!med) + if (!med || !med->monologue) continue; - - med->monologue = redis_list_get_ptr(tags, &medias->rh[i], "tag"); - if (!med->monologue) - return -1; if (json_build_list(&med->streams, c, "streams", i, streams, root_reader)) return -1; if (json_build_list(&med->endpoint_maps, c, "maps", i, maps, root_reader)) @@ -2044,7 +2045,7 @@ static void json_restore_call(struct redis *r, const str *callid, bool foreign) if (redis_tags(c, &tags, root_reader)) goto err8; err = "failed to create medias"; - if (json_medias(c, &medias, root_reader)) + if (json_medias(c, &medias, &tags, root_reader)) goto err8; err = "failed to create maps"; if (redis_maps(c, &maps)) @@ -2060,7 +2061,7 @@ static void json_restore_call(struct redis *r, const str *callid, bool foreign) if (json_link_tags(c, &tags, &medias, root_reader)) goto err8; err = "failed to link medias"; - if (json_link_medias(c, &medias, &streams, &maps, &tags, root_reader)) + if (json_link_medias(c, &medias, &streams, &maps, root_reader)) goto err8; err = "failed to link maps"; if (json_link_maps(c, &maps, &sfds, root_reader))