Browse Source

modules/websocket: More tidying up

Peter Dunkley 13 years ago
parent
commit
76f15b97d6
2 changed files with 16 additions and 8 deletions
  1. 4 4
      modules/websocket/ws_conn.c
  2. 12 4
      modules/websocket/ws_mod.c

+ 4 - 4
modules/websocket/ws_conn.c

@@ -31,10 +31,10 @@ gen_lock_t *wsconn_lock = NULL;
 
 
 char *wsconn_state_str[] =
 char *wsconn_state_str[] =
 {
 {
-	"CONNECTING",
-	"OPEN",
-	"CLOSING",
-	"CLOSED"
+	"CONNECTING",	/* WS_S_CONNECTING */
+	"OPEN",		/* WS_S_OPEN */
+	"CLOSING",	/* WS_S_CLOSING */
+	"CLOSED"	/* WS_S_CLOSED */
 };
 };
 
 
 static inline void _wsconn_rm(ws_connection_t *wsc);
 static inline void _wsconn_rm(ws_connection_t *wsc);

+ 12 - 4
modules/websocket/ws_mod.c

@@ -39,6 +39,9 @@
 
 
 MODULE_VERSION
 MODULE_VERSION
 
 
+/* Maximum number of connections to display when using the ws.dump MI command */
+#define MAX_WS_CONNS_DUMP	50
+
 extern gen_lock_t *tcpconn_lock;
 extern gen_lock_t *tcpconn_lock;
 extern struct tcp_connection **tcpconn_id_hash;
 extern struct tcp_connection **tcpconn_id_hash;
 
 
@@ -197,7 +200,7 @@ static void destroy(void)
 
 
 static struct mi_root *mi_dump(struct mi_root *cmd, void *param)
 static struct mi_root *mi_dump(struct mi_root *cmd, void *param)
 {
 {
-	int h, connections = 0, interval;
+	int h, connections = 0, truncated = 0, interval;
 	char *src_proto, *dst_proto;
 	char *src_proto, *dst_proto;
 	char src_ip[IP6_MAX_STR_SIZE + 1], dst_ip[IP6_MAX_STR_SIZE + 1];
 	char src_ip[IP6_MAX_STR_SIZE + 1], dst_ip[IP6_MAX_STR_SIZE + 1];
 	ws_connection_t *wsc;
 	ws_connection_t *wsc;
@@ -243,7 +246,11 @@ static struct mi_root *mi_dump(struct mi_root *cmd, void *param)
 						interval) == 0)
 						interval) == 0)
 					return 0;
 					return 0;
 
 
-				connections++;
+				if (++connections == MAX_WS_CONNS_DUMP)
+				{
+					truncated = 1;
+					break;
+				}
 			}
 			}
 
 
 			wsc = wsc->next;
 			wsc = wsc->next;
@@ -252,8 +259,9 @@ static struct mi_root *mi_dump(struct mi_root *cmd, void *param)
 	WSCONN_UNLOCK;
 	WSCONN_UNLOCK;
 
 
 	if (addf_mi_node_child(&rpl_tree->node, 0, 0, 0,
 	if (addf_mi_node_child(&rpl_tree->node, 0, 0, 0,
-				"%d WebSocket connection%s found",
-				connections, connections == 1 ? "" : "s") == 0)
+				"%d WebSocket connection%s found%s",
+				connections, connections == 1 ? "" : "s",
+				truncated == 1 ? "(truncated)" : "") == 0)
 		return 0;
 		return 0;
 
 
 	return rpl_tree;
 	return rpl_tree;