Browse Source

MT#55283 add desired_family to call_monologue

This is required to look up the correct interface during Redis restore.

Change-Id: I0ea67576deba95b4201c6384fdcf8051b84f879e
(cherry picked from commit 531e720fd4)
pull/1887/head
Richard Fuchs 2 years ago
parent
commit
0567baf609
4 changed files with 32 additions and 5 deletions
  1. +5
    -3
      daemon/call.c
  2. +7
    -2
      daemon/redis.c
  3. +1
    -0
      include/call.h
  4. +19
    -0
      t/auto-daemon-tests-redis.pl

+ 5
- 3
daemon/call.c View File

@ -2049,8 +2049,10 @@ static void __tos_change(struct call *call, const struct sdp_ng_flags *flags) {
}
static void __init_interface(struct call_media *media, const str *ifname, int num_ports) {
if (!media->logical_intf && media->monologue)
if (!media->logical_intf)
media->logical_intf = media->monologue->logical_intf;
if (!media->desired_family)
media->desired_family = media->monologue->desired_family;
if (!media->logical_intf)
goto get;
if (media->logical_intf->preferred_family != media->desired_family)
@ -2078,8 +2080,8 @@ get:
media->logical_intf = get_logical_interface(NULL, NULL, 0);
}
}
if (media->monologue)
media->monologue->logical_intf = media->logical_intf;
media->monologue->logical_intf = media->logical_intf;
media->monologue->desired_family = media->desired_family;
}


+ 7
- 2
daemon/redis.c View File

@ -1509,11 +1509,15 @@ static int redis_tags(struct call *c, struct redis_list *tags, JsonReader *root_
if (!redis_hash_get_int(&ii, rh, "ml_flags"))
ml->ml_flags = ii;
if (redis_hash_get_str(&s, rh, "desired_family"))
return -1;
ml->desired_family = get_socket_family_rfc(&s);
if (redis_hash_get_str(&s, rh, "logical_intf")
|| !(ml->logical_intf = get_logical_interface(&s, NULL, 0)))
|| !(ml->logical_intf = get_logical_interface(&s, ml->desired_family, 0)))
{
rlog(LOG_ERR, "unable to find specified local interface");
ml->logical_intf = get_logical_interface(NULL, NULL, 0);
ml->logical_intf = get_logical_interface(NULL, ml->desired_family, 0);
}
if (json_build_ssrc(ml, root_reader))
@ -2485,6 +2489,7 @@ char* redis_encode_json(struct call *c) {
JSON_SET_SIMPLE("deleted", "%llu", (long long unsigned) ml->deleted);
JSON_SET_SIMPLE("block_dtmf", "%i", ml->block_dtmf);
JSON_SET_SIMPLE("ml_flags","%u", ml->ml_flags);
JSON_SET_SIMPLE_CSTR("desired_family", ml->desired_family ? ml->desired_family->rfc_name : "");
if (ml->logical_intf)
JSON_SET_SIMPLE_STR("logical_intf", &ml->logical_intf->name);


+ 1
- 0
include/call.h View File

@ -532,6 +532,7 @@ struct call_monologue {
struct timeval started; /* for CDR */
struct timeval terminated; /* for CDR */
enum termination_reason term_reason;
sockfamily_t *desired_family;
const struct logical_intf *logical_intf;
GHashTable *associated_tags;
GQueue subscriptions; /* who am I subscribed to (sources) */


+ 19
- 0
t/auto-daemon-tests-redis.pl View File

@ -309,6 +309,7 @@ $json_exp = {
'tag-0' => {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'desired_family' => 'IP4',
'deleted' => '0',
'logical_intf' => 'foo',
'ml_flags' => 0,
@ -317,6 +318,7 @@ $json_exp = {
'tag-1' => {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'desired_family' => 'IP4',
'deleted' => '0',
'logical_intf' => 'foo',
'ml_flags' => 0,
@ -566,6 +568,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -574,6 +577,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => tt()
@ -831,6 +835,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -839,6 +844,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
}
@ -1090,6 +1096,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -1098,6 +1105,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => tt()
@ -1536,6 +1544,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -1544,6 +1553,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => tt()
@ -1552,6 +1562,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr/^\d+$/,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => qr//
@ -1740,6 +1751,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -1979,6 +1991,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -1987,6 +2000,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => qr//,
@ -2218,6 +2232,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -2226,6 +2241,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => qr//,
@ -2550,6 +2566,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => ft()
@ -2558,6 +2575,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => qr//,
@ -2566,6 +2584,7 @@ $json_exp = {
'block_dtmf' => '0',
'created' => qr//,
'deleted' => '0',
'desired_family' => 'IP4',
'logical_intf' => 'foo',
'ml_flags' => 0,
'tag' => qr//,


Loading…
Cancel
Save