|
|
|
|
@ -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)
|
|
|
|
|
|