}
-static void sofia_reg_fire_custom_gateway_state_event(sofia_gateway_t *gateway) {
+static void sofia_reg_fire_custom_gateway_state_event(sofia_gateway_t *gateway, int status, const char *phrase) {
switch_event_t *s_event;
if (switch_event_create_subclass(&s_event, SWITCH_EVENT_CUSTOM, MY_EVENT_GATEWAY_STATE) == SWITCH_STATUS_SUCCESS) {
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));
+ if (!zstr(phrase)) {
+ switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "Phrase", phrase);
+ }
+ if (status) {
+ switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "Status", "%d", status);
+ }
switch_event_fire(&s_event);
}
}
break;
}
if (ostate != gateway_ptr->state) {
- sofia_reg_fire_custom_gateway_state_event(gateway_ptr);
+ sofia_reg_fire_custom_gateway_state_event(gateway_ptr, 0, NULL);
}
}
}
break;
}
if (ostate != sofia_private->gateway->state) {
- sofia_reg_fire_custom_gateway_state_event(sofia_private->gateway);
+ sofia_reg_fire_custom_gateway_state_event(sofia_private->gateway, status, phrase);
}
}
}
gateway_ptr->state = REG_STATE_UNREGISTER;
}
if (ostate != gateway_ptr->state) {
- sofia_reg_fire_custom_gateway_state_event(gateway_ptr);
+ sofia_reg_fire_custom_gateway_state_event(gateway_ptr, 0, NULL);
}
sofia_reg_release_gateway(gateway_ptr);
}
gateway_ptr->state = REG_STATE_UNREGISTER;
}
if (ostate != gateway_ptr->state) {
- sofia_reg_fire_custom_gateway_state_event(gateway_ptr);
+ sofia_reg_fire_custom_gateway_state_event(gateway_ptr, 0, NULL);
}
sofia_reg_release_gateway(gateway_ptr);
} else {