[sr-dev] git:pd/websocket: modules/websocket: improvements to ws.dump MI command

Peter Dunkley peter.dunkley at crocodile-rcs.com
Sun Jun 24 01:40:58 CEST 2012


Module: sip-router
Branch: pd/websocket
Commit: c270ac0e54ada9cc2599b21f8c87b5a0704093af
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c270ac0e54ada9cc2599b21f8c87b5a0704093af

Author: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Date:   Sun Jun 24 00:40:24 2012 +0100

modules/websocket: improvements to ws.dump MI command

---

 modules/websocket/ws_conn.c |   32 ++++++++++++++++++++++++++------
 1 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/modules/websocket/ws_conn.c b/modules/websocket/ws_conn.c
index 664750f..e2795a0 100644
--- a/modules/websocket/ws_conn.c
+++ b/modules/websocket/ws_conn.c
@@ -369,25 +369,27 @@ struct mi_root *ws_mi_dump(struct mi_root *cmd, void *param)
 	{
 		if (node->value.s == NULL || node->value.len == 0)
 		{
-			LM_ERR("empty display order parameter\n");
+			LM_WARN("empty display order parameter\n");
 			return init_mi_tree(400, str_status_empty_param.s,
 						str_status_empty_param.len);
 		}
 		strlower(&node->value);
-		if (strncmp(node->value.s, "id", 2) == 0)
+		if (strncmp(node->value.s, "id_hash", 7) == 0)
 			order = 0;
-		else if (strncmp(node->value.s, "used", 4) == 0)
+		else if (strncmp(node->value.s, "used_desc", 9) == 0)
 			order = 1;
+		else if (strncmp(node->value.s, "used_asc", 8) == 0)
+			order = 2;
 		else
 		{
-			LM_ERR("bad display order parameter\n");
+			LM_WARN("bad display order parameter\n");
 			return init_mi_tree(400, str_status_bad_param.s,
 						str_status_bad_param.len);
 		}
 
 		if (node->next != NULL)
 		{
-			LM_ERR("too many parameters\n");
+			LM_WARN("too many parameters\n");
 			return init_mi_tree(400, str_status_too_many_params.s,
 						str_status_too_many_params.len);
 		}
@@ -419,7 +421,7 @@ struct mi_root *ws_mi_dump(struct mi_root *cmd, void *param)
 				break;
 		}
 	}
-	else
+	else if (order == 1)
 	{
 		wsc = wsconn_used_list->head;
 		while (wsc)
@@ -437,6 +439,24 @@ struct mi_root *ws_mi_dump(struct mi_root *cmd, void *param)
 			wsc = wsc->used_next;
 		}
 	}
+	else
+	{
+		wsc = wsconn_used_list->tail;
+		while (wsc)
+		{
+			if ((found = add_node(rpl_tree, wsc)) < 0)
+				return 0;
+
+			connections += found;
+			if (connections >= MAX_WS_CONNS_DUMP)
+			{
+				truncated = 1;
+				break;
+			}
+
+			wsc = wsc->used_prev;
+		}
+	}
 	WSCONN_UNLOCK;
 
 	if (addf_mi_node_child(&rpl_tree->node, 0, 0, 0,




More information about the sr-dev mailing list