diff --git a/daemon/redis.c b/daemon/redis.c index b9750b164..624f411ed 100644 --- a/daemon/redis.c +++ b/daemon/redis.c @@ -1479,7 +1479,6 @@ static int redis_streams(call_t *c, struct redis_list *streams) { static int redis_tags(call_t *c, struct redis_list *tags, JsonReader *root_reader) { unsigned int i; int ii; - unsigned long long lli; /* llu is reserved */ atomic64 a64; struct redis_hash *rh; struct call_monologue *ml; @@ -1508,10 +1507,48 @@ static int redis_tags(call_t *c, struct redis_list *tags, JsonReader *root_reade if (!redis_hash_get_a64(&a64, rh, "ml_flags")) ml->ml_flags = a64; + /* s= */ if (!redis_hash_get_str(&s, rh, "sdp_session_name")) ml->sdp_session_name = call_strdup_len(c, s.s, s.len); + /* t= */ if (!redis_hash_get_str(&s, rh, "sdp_session_timing")) ml->sdp_session_timing = call_strdup_len(c, s.s, s.len); + /* o= */ + if (!redis_hash_get_str(&s, rh, "sdp_orig_parsed")) { + ml->session_sdp_orig = g_slice_alloc0(sizeof(*ml->session_sdp_orig)); + ml->session_sdp_orig->parsed = 1; + redis_hash_get_llu(&ml->session_sdp_orig->version_num, rh, "sdp_orig_version_num"); + if (!redis_hash_get_str(&s, rh, "sdp_orig_username")) + call_str_cpy(c, &ml->session_sdp_orig->username, &s); + if (!redis_hash_get_str(&s, rh, "sdp_orig_session_id")) + call_str_cpy(c, &ml->session_sdp_orig->session_id, &s); + if (!redis_hash_get_str(&s, rh, "sdp_orig_version_str")) + call_str_cpy(c, &ml->session_sdp_orig->version_str, &s); + if (!redis_hash_get_str(&s, rh, "sdp_orig_address_network_type")) + call_str_cpy(c, &ml->session_sdp_orig->address.network_type, &s); + if (!redis_hash_get_str(&s, rh, "sdp_orig_address_address_type")) + call_str_cpy(c, &ml->session_sdp_orig->address.address_type, &s); + if (!redis_hash_get_str(&s, rh, "sdp_orig_address_address")) + call_str_cpy(c, &ml->session_sdp_orig->address.address, &s); + } + /* o= last used of the other side*/ + if (!redis_hash_get_str(&s, rh, "last_sdp_orig_parsed")) { + ml->session_last_sdp_orig = g_slice_alloc0(sizeof(*ml->session_last_sdp_orig)); + ml->session_last_sdp_orig->parsed = 1; + redis_hash_get_llu(&ml->session_last_sdp_orig->version_num, rh, "last_sdp_orig_version_num"); + if (!redis_hash_get_str(&s, rh, "last_sdp_orig_username")) + call_str_cpy(c, &ml->session_last_sdp_orig->username, &s); + if (!redis_hash_get_str(&s, rh, "last_sdp_orig_session_id")) + call_str_cpy(c, &ml->session_last_sdp_orig->session_id, &s); + if (!redis_hash_get_str(&s, rh, "last_sdp_orig_version_str")) + call_str_cpy(c, &ml->session_last_sdp_orig->version_str, &s); + if (!redis_hash_get_str(&s, rh, "last_sdp_orig_address_network_type")) + call_str_cpy(c, &ml->session_last_sdp_orig->address.network_type, &s); + if (!redis_hash_get_str(&s, rh, "last_sdp_orig_address_address_type")) + call_str_cpy(c, &ml->session_last_sdp_orig->address.address_type, &s); + if (!redis_hash_get_str(&s, rh, "last_sdp_orig_address_address")) + call_str_cpy(c, &ml->session_last_sdp_orig->address.address, &s); + } ml->sdp_session_rr = (!redis_hash_get_int(&ii, rh, "sdp_session_rr")) ? ii : -1; ml->sdp_session_rs = (!redis_hash_get_int(&ii, rh, "sdp_session_rs")) ? ii : -1; @@ -2526,6 +2563,27 @@ char* redis_encode_json(call_t *c) { JSON_SET_SIMPLE_CSTR("sdp_session_name", ml->sdp_session_name ? ml->sdp_session_name : ""); JSON_SET_SIMPLE_CSTR("sdp_session_timing", ml->sdp_session_timing ? ml->sdp_session_timing : ""); + if (ml->session_sdp_orig) { + JSON_SET_SIMPLE_STR("sdp_orig_username", &ml->session_sdp_orig->username); + JSON_SET_SIMPLE_STR("sdp_orig_session_id", &ml->session_sdp_orig->session_id); + JSON_SET_SIMPLE_STR("sdp_orig_version_str", &ml->session_sdp_orig->version_str); + JSON_SET_SIMPLE("sdp_orig_version_num", "%llu", (long long unsigned) ml->session_sdp_orig->version_num); + JSON_SET_SIMPLE("sdp_orig_parsed", "%u", (unsigned int) ml->session_sdp_orig->parsed); + JSON_SET_SIMPLE_STR("sdp_orig_address_network_type", &ml->session_sdp_orig->address.network_type); + JSON_SET_SIMPLE_STR("sdp_orig_address_address_type", &ml->session_sdp_orig->address.address_type); + JSON_SET_SIMPLE_STR("sdp_orig_address_address", &ml->session_sdp_orig->address.address); + } + if (ml->session_last_sdp_orig) { + JSON_SET_SIMPLE_STR("last_sdp_orig_username", &ml->session_last_sdp_orig->username); + JSON_SET_SIMPLE_STR("last_sdp_orig_session_id", &ml->session_last_sdp_orig->session_id); + JSON_SET_SIMPLE_STR("last_sdp_orig_version_str", &ml->session_last_sdp_orig->version_str); + JSON_SET_SIMPLE("last_sdp_orig_version_num", "%llu", (long long unsigned) ml->session_last_sdp_orig->version_num); + JSON_SET_SIMPLE("last_sdp_orig_parsed", "%u", (unsigned int) ml->session_last_sdp_orig->parsed); + JSON_SET_SIMPLE_STR("last_sdp_orig_address_network_type", &ml->session_last_sdp_orig->address.network_type); + JSON_SET_SIMPLE_STR("last_sdp_orig_address_address_type", &ml->session_last_sdp_orig->address.address_type); + JSON_SET_SIMPLE_STR("last_sdp_orig_address_address", &ml->session_last_sdp_orig->address.address); + } + if (ml->sdp_session_rr >= 0) JSON_SET_SIMPLE("sdp_session_rr", "%i", ml->sdp_session_rr); if (ml->sdp_session_rs >= 0)