[Asterisk-code-review] res pjsip log forwarder.c: Add CLI "pjsip dump endpt [details]" (asterisk[master])

Richard Mudgett asteriskteam at digium.com
Fri Jan 15 10:43:02 CST 2016


Richard Mudgett has uploaded a new change for review.

  https://gerrit.asterisk.org/2023

Change subject: res_pjsip_log_forwarder.c: Add CLI "pjsip dump endpt [details]"
......................................................................

res_pjsip_log_forwarder.c: Add CLI "pjsip dump endpt [details]"

Dump the res_pjsip endpt internals.

Warning: PJPROJECT documents that the function used by this CLI command
may cause a crash when asking for details because it tries to access all
active memory pools.

Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb
---
M res/res_pjsip_log_forwarder.c
1 file changed, 47 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/23/2023/1

diff --git a/res/res_pjsip_log_forwarder.c b/res/res_pjsip_log_forwarder.c
index c6b396a..8b303b8 100644
--- a/res/res_pjsip_log_forwarder.c
+++ b/res/res_pjsip_log_forwarder.c
@@ -47,6 +47,7 @@
 #include "asterisk/logger.h"
 #include "asterisk/module.h"
 #include "asterisk/cli.h"
+#include "asterisk/res_pjsip.h"
 
 static pj_log_func *log_cb_orig;
 static unsigned decor_orig;
@@ -139,7 +140,53 @@
 	return CLI_SUCCESS;
 }
 
+static int do_pjsip_dump_endpt(void *v_a)
+{
+	struct ast_cli_args *a = v_a;
+
+	show_buildopts.thread = pthread_self();
+	show_buildopts.fd = a->fd;
+	pjsip_endpt_dump(ast_sip_get_pjsip_endpoint(), a->argc == 4 ? PJ_TRUE : PJ_FALSE);
+	show_buildopts.fd = -1;
+	show_buildopts.thread = AST_PTHREADT_NULL;
+
+	return 0;
+}
+
+static char *handle_pjsip_dump_endpt(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+	switch(cmd) {
+	case CLI_INIT:
+		e->command = "pjsip dump endpt [details]";
+		e->usage =
+			"Usage: pjsip dump endpt [details]\n"
+			"       Dump the res_pjsip endpt internals.\n"
+			"\n"
+			"Warning: PJPROJECT documents that the function used by this\n"
+			"CLI command may cause a crash when asking for details because\n"
+			"it tries to access all active memory pools.\n";
+		return NULL;
+	case CLI_GENERATE:
+		return NULL;
+	}
+
+	if (4 < a->argc
+		|| (a->argc == 4 && strcasecmp(a->argv[3], "details"))) {
+		return CLI_SHOWUSAGE;
+	}
+
+	/* Protect from other CLI instances trying to do this at the same time. */
+	ast_mutex_lock(&show_buildopts_lock);
+
+	ast_sip_push_task_synchronous(NULL, do_pjsip_dump_endpt, a);
+
+	ast_mutex_unlock(&show_buildopts_lock);
+
+	return CLI_SUCCESS;
+}
+
 static struct ast_cli_entry pjsip_cli[] = {
+	AST_CLI_DEFINE(handle_pjsip_dump_endpt, "Dump the res_pjsip endpt internals"),
 	AST_CLI_DEFINE(handle_pjsip_show_buildopts, "Show the compiled config of pjproject in use"),
 };
 

-- 
To view, visit https://gerrit.asterisk.org/2023
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Richard Mudgett <rmudgett at digium.com>



More information about the asterisk-code-review mailing list