diff options
-rw-r--r-- | include/asterisk/res_pjsip.h | 2 | ||||
-rw-r--r-- | res/res_pjsip/config_auth.c | 2 | ||||
-rw-r--r-- | res/res_pjsip/config_transport.c | 18 | ||||
-rw-r--r-- | res/res_pjsip/location.c | 2 | ||||
-rw-r--r-- | res/res_pjsip/pjsip_configuration.c | 6 | ||||
-rw-r--r-- | res/res_pjsip/pjsip_options.c | 3 | ||||
-rw-r--r-- | res/res_pjsip_endpoint_identifier_ip.c | 2 |
7 files changed, 26 insertions, 9 deletions
diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h index 45d9325ee..fdb2105cf 100644 --- a/include/asterisk/res_pjsip.h +++ b/include/asterisk/res_pjsip.h @@ -1727,6 +1727,8 @@ struct ast_sip_ami { const char *action_id; /*! user specified argument data */ void *arg; + /*! count of objects */ + int count; }; /*! diff --git a/res/res_pjsip/config_auth.c b/res/res_pjsip/config_auth.c index cd4b95985..b8c9bc9d1 100644 --- a/res/res_pjsip/config_auth.c +++ b/res/res_pjsip/config_auth.c @@ -175,6 +175,8 @@ static int format_ami_auth_handler(void *obj, void *arg, int flags) } astman_append(ami->s, "%s\r\n", ast_str_buffer(buf)); + ami->count++; + return 0; } diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c index 785fcc5ac..0a56b9263 100644 --- a/res/res_pjsip/config_transport.c +++ b/res/res_pjsip/config_transport.c @@ -39,16 +39,20 @@ static int sip_transport_to_ami(const struct ast_sip_transport *transport, static int format_ami_endpoint_transport(const struct ast_sip_endpoint *endpoint, struct ast_sip_ami *ami) { - RAII_VAR(struct ast_str *, buf, - ast_sip_create_ami_event("TransportDetail", ami), ast_free); - RAII_VAR(struct ast_sip_transport *, - transport, ast_sorcery_retrieve_by_id( - ast_sip_get_sorcery(), "transport", - endpoint->transport), ao2_cleanup); + RAII_VAR(struct ast_str *, buf, NULL, ast_free); + RAII_VAR(struct ast_sip_transport *, transport, NULL, ao2_cleanup); + + if (ast_strlen_zero(endpoint->transport)) { + return 0; + } + + buf = ast_sip_create_ami_event("TransportDetail", ami); if (!buf) { return -1; } + transport = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport", + endpoint->transport); if (!transport) { astman_send_error_va(ami->s, ami->m, "Unable to retrieve " "transport %s\n", endpoint->transport); @@ -61,6 +65,8 @@ static int format_ami_endpoint_transport(const struct ast_sip_endpoint *endpoint ast_sorcery_object_get_id(endpoint)); astman_append(ami->s, "%s\r\n", ast_str_buffer(buf)); + ami->count++; + return 0; } diff --git a/res/res_pjsip/location.c b/res/res_pjsip/location.c index b0a49cdf7..d6015c758 100644 --- a/res/res_pjsip/location.c +++ b/res/res_pjsip/location.c @@ -506,6 +506,8 @@ static int format_ami_aor_handler(void *obj, void *arg, int flags) ast_sorcery_object_get_id(endpoint)); astman_append(ami->s, "%s\r\n", ast_str_buffer(buf)); + ami->count++; + return 0; } diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c index 548372879..9166d3f33 100644 --- a/res/res_pjsip/pjsip_configuration.c +++ b/res/res_pjsip/pjsip_configuration.c @@ -1107,7 +1107,8 @@ static int format_ami_endpoint(const struct ast_sip_endpoint *endpoint, static int ami_show_endpoint(struct mansession *s, const struct message *m) { - struct ast_sip_ami ami = { .s = s, .m = m, .action_id = astman_get_header(m, "ActionID"), }; + struct ast_sip_ami ami = { .s = s, .m = m, .action_id = astman_get_header(m, "ActionID"), + .count = 0, }; RAII_VAR(struct ast_sip_endpoint *, endpoint, NULL, ao2_cleanup); const char *endpoint_name = astman_get_header(m, "Endpoint"); int count = 0; @@ -1144,7 +1145,8 @@ static int ami_show_endpoint(struct mansession *s, const struct message *m) astman_append(s, "ActionID: %s\r\n", ami.action_id); } astman_append(s, "EventList: Complete\r\n" - "ListItems: %d\r\n\r\n", count + 1); + "ListItems: %d\r\n\r\n", ami.count + 1); + return 0; } diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c index c9b4f8ccb..1c26251ab 100644 --- a/res/res_pjsip/pjsip_options.c +++ b/res/res_pjsip/pjsip_options.c @@ -995,7 +995,8 @@ static int format_contact_status(void *obj, void *arg, int flags) ast_str_append(&buf, 0, "EndpointName: %s\r\n", ast_sorcery_object_get_id(endpoint)); astman_append(ami->s, "%s\r\n", ast_str_buffer(buf)); - + ami->count++; + ast_free(buf); ao2_cleanup(status); return 0; diff --git a/res/res_pjsip_endpoint_identifier_ip.c b/res/res_pjsip_endpoint_identifier_ip.c index 294c4455d..5d938c03e 100644 --- a/res/res_pjsip_endpoint_identifier_ip.c +++ b/res/res_pjsip_endpoint_identifier_ip.c @@ -263,6 +263,8 @@ static int format_ami_endpoint_identify(const struct ast_sip_endpoint *endpoint, ast_sorcery_object_get_id(endpoint)); astman_append(ami->s, "%s\r\n", ast_str_buffer(buf)); + ami->count++; + return 0; } |