]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11562 #resolve add register ip and port to gateway register state change events
authorSeven Du <seven@signalwire.com>
Mon, 10 Dec 2018 14:04:16 +0000 (22:04 +0800)
committerChris Rienzo <chris@rienzo.com>
Mon, 10 Dec 2018 15:22:20 +0000 (10:22 -0500)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia_reg.c

index 6b9b90ad5b8d569f2b074a76f4a36bf720836d75..cdb311f35a19d6d310f43178cd2cf019c02d6730 100644 (file)
@@ -561,6 +561,8 @@ struct sofia_gateway {
        sofia_gateway_subscription_t *subscriptions;
        int distinct_to;
        sofia_cid_type_t cid_type;
+       char register_network_ip[80];
+       int register_network_port;
 };
 
 typedef enum {
index 601824c334d586bee763aab435c1cf4d04d8fbcc..d6db3d19e6a0fac4f80adf2c1e44de627baa35a5 100644 (file)
@@ -151,6 +151,9 @@ void sofia_reg_fire_custom_gateway_state_event(sofia_gateway_t *gateway, int sta
                switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "Gateway", gateway->name);
                switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "State", sofia_state_string(gateway->state));
                switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "Ping-Status", sofia_gateway_status_name(gateway->status));
+               switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "Register-Network-IP", gateway->register_network_ip);
+               switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "Register-Network-Port", "%d", gateway->register_network_port);
+
                if (!zstr(phrase)) {
                        switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "Phrase", phrase);
                }
@@ -2402,6 +2405,11 @@ void sofia_reg_handle_sip_r_register(int status,
 
        if (sofia_private && gateway) {
                reg_state_t ostate = gateway->state;
+               char network_ip[80];
+
+               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);
+
                switch (status) {
                case 200:
                        if (sip && sip->sip_contact) {