From cae7f0fa2f55fe04265353a8be03f1e39ef00354 Mon Sep 17 00:00:00 2001 From: Chris Rienzo Date: Mon, 10 Dec 2018 21:26:10 -0500 Subject: [PATCH] FS-11562 [mod_sofia] fire register state event on changing registrar IP --- src/mod/endpoints/mod_sofia/sofia_reg.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index d6db3d19e6..39ae6b3b03 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -2405,8 +2405,12 @@ void sofia_reg_handle_sip_r_register(int status, if (sofia_private && gateway) { reg_state_t ostate = gateway->state; + char oregister_network_ip[80] = { 0 }; char network_ip[80]; + if (!zstr_buf(gateway->register_network_ip)) { + strncpy(oregister_network_ip, gateway->register_network_ip, sizeof(oregister_network_ip) - 1); + } sofia_glue_get_addr(de->data->e_msg, network_ip, sizeof(network_ip), &gateway->register_network_port); snprintf(gateway->register_network_ip, sizeof(gateway->register_network_ip), (msg_addrinfo(de->data->e_msg))->ai_addr->sa_family == AF_INET6 ? "[%s]" : "%s", network_ip); @@ -2465,7 +2469,9 @@ void sofia_reg_handle_sip_r_register(int status, gateway->name, switch_str_nil(phrase), status, ++gateway->failures); break; } - if (ostate != gateway->state) { + if (ostate != gateway->state || + zstr_buf(oregister_network_ip) || strcmp(oregister_network_ip, gateway->register_network_ip)) { + sofia_reg_fire_custom_gateway_state_event(gateway, status, phrase); } }