diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c
index 8c4724606f..019bb9fad4 100644
--- a/src/mod/endpoints/mod_sofia/mod_sofia.c
+++ b/src/mod/endpoints/mod_sofia/mod_sofia.c
@@ -2658,6 +2658,47 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t
return SWITCH_STATUS_SUCCESS;
}
+static void xml_gateway_status(sofia_gateway_t *gp, switch_stream_handle_t *stream)
+{
+ char xmlbuf[2096];
+ const int buflen = 2096;
+
+ stream->write_function(stream, " \n");
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->name));
+ stream->write_function(stream, " %s\n", gp->profile->name);
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->register_scheme));
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->register_realm));
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->register_username));
+ stream->write_function(stream, " %s\n", zstr(gp->register_password) ? "no" : "yes");
+ stream->write_function(stream, " %s\n", switch_amp_encode(switch_str_nil(gp->register_from), xmlbuf, buflen));
+ stream->write_function(stream, " %s\n", switch_amp_encode(switch_str_nil(gp->register_contact), xmlbuf, buflen));
+ stream->write_function(stream, " %s\n", switch_amp_encode(switch_str_nil(gp->extension), xmlbuf, buflen));
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->register_to));
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->register_proxy));
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->register_context));
+ stream->write_function(stream, " %s\n", switch_str_nil(gp->expires_str));
+ stream->write_function(stream, " %d\n", gp->freq);
+ stream->write_function(stream, " %d\n", gp->ping);
+ stream->write_function(stream, " %d\n", gp->ping_freq);
+ stream->write_function(stream, " %s\n", sofia_state_names[gp->state]);
+ stream->write_function(stream, " %s%s\n", status_names[gp->status], gp->pinging ? " (ping)" : "");
+ stream->write_function(stream, " %d\n", gp->ib_calls);
+ stream->write_function(stream, " %d\n", gp->ob_calls);
+ stream->write_function(stream, " %d\n", gp->ib_failed_calls);
+ stream->write_function(stream, " %d\n", gp->ob_failed_calls);
+
+ if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) {
+ time_t now = switch_epoch_time_now(NULL);
+ if (gp->retry > now) {
+ stream->write_function(stream, " %ds\n", gp->retry - now);
+ } else {
+ stream->write_function(stream, " NEVER\n");
+ }
+ }
+
+ stream->write_function(stream, " \n");
+}
+
static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handle_t *stream)
{
sofia_profile_t *profile = NULL;
@@ -2665,8 +2706,6 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl
switch_hash_index_t *hi;
void *val;
const void *vvar;
- const int buflen = 2096;
- char xmlbuf[2096];
int c = 0;
int ac = 0;
const char *header = "";
@@ -2688,24 +2727,7 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl
for (gp = profile->gateways; gp; gp = gp->next) {
switch_assert(gp->state < REG_STATE_LAST);
- stream->write_function(stream, "\t\n");
- stream->write_function(stream, "\t\t%s\n", profile->name);
- stream->write_function(stream, "\t\t%s\n", gp->register_to);
- stream->write_function(stream, "\t\t%s\n", sofia_state_names[gp->state]);
- stream->write_function(stream, "\t\t%ld\n", gp->ib_calls);
- stream->write_function(stream, "\t\t%ld\n", gp->ob_calls);
- stream->write_function(stream, "\t\t%ld\n", gp->ib_failed_calls);
- stream->write_function(stream, "\t\t%ld\n", gp->ob_failed_calls);
-
- if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) {
- time_t now = switch_epoch_time_now(NULL);
- if (gp->retry > now) {
- stream->write_function(stream, "\t\t%ds\n", gp->retry - now);
- } else {
- stream->write_function(stream, "\t\tNEVER\n");
- }
- }
- stream->write_function(stream, "\t\n");
+ xml_gateway_status(gp, stream);
}
}
}
@@ -2713,36 +2735,12 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl
switch_mutex_unlock(mod_sofia_globals.hash_mutex);
stream->write_function(stream, "\n");
- return SWITCH_STATUS_SUCCESS;
- }
- if (!strcasecmp(argv[0], "gateway")) {
+ } else if (argc == 1 && !strcasecmp(argv[0], "profile")) {
+ } else if (!strcasecmp(argv[0], "gateway")) {
if ((gp = sofia_reg_find_gateway(argv[1]))) {
switch_assert(gp->state < REG_STATE_LAST);
stream->write_function(stream, "%s\n", header);
- stream->write_function(stream, " \n");
- stream->write_function(stream, " %s\n", switch_str_nil(gp->name));
- stream->write_function(stream, " %s\n", gp->profile->name);
- stream->write_function(stream, " %s\n", switch_str_nil(gp->register_scheme));
- stream->write_function(stream, " %s\n", switch_str_nil(gp->register_realm));
- stream->write_function(stream, " %s\n", switch_str_nil(gp->register_username));
- stream->write_function(stream, " %s\n", zstr(gp->register_password) ? "no" : "yes");
- stream->write_function(stream, " %s\n", switch_amp_encode(switch_str_nil(gp->register_from), xmlbuf, buflen));
- stream->write_function(stream, " %s\n", switch_amp_encode(switch_str_nil(gp->register_contact), xmlbuf, buflen));
- stream->write_function(stream, " %s\n", switch_amp_encode(switch_str_nil(gp->extension), xmlbuf, buflen));
- stream->write_function(stream, " %s\n", switch_str_nil(gp->register_to));
- stream->write_function(stream, " %s\n", switch_str_nil(gp->register_proxy));
- stream->write_function(stream, " %s\n", switch_str_nil(gp->register_context));
- stream->write_function(stream, " %s\n", switch_str_nil(gp->expires_str));
- stream->write_function(stream, " %d\n", gp->freq);
- stream->write_function(stream, " %d\n", gp->ping);
- stream->write_function(stream, " %d\n", gp->ping_freq);
- stream->write_function(stream, " %s\n", sofia_state_names[gp->state]);
- stream->write_function(stream, " %s%s\n", status_names[gp->status], gp->pinging ? " (ping)" : "");
- stream->write_function(stream, " %d\n", gp->ib_calls);
- stream->write_function(stream, " %d\n", gp->ob_calls);
- stream->write_function(stream, " %d\n", gp->ib_failed_calls);
- stream->write_function(stream, " %d\n", gp->ob_failed_calls);
- stream->write_function(stream, " \n");
+ xml_gateway_status(gp, stream);
sofia_reg_release_gateway(gp);
} else {
stream->write_function(stream, "Invalid Gateway!\n");