Diff between 4a80373beb3cc6826c9d39b8f60ac1ea62375cf5 and 5599bf01f4af52c13c60795931b7405b9e61ba18

Changed Files

File Additions Deletions Status
monitor/control.c +8 -9 modified
monitor/control.h +1 -1 modified
monitor/packet.c +1 -1 modified

Full Patch

diff --git a/monitor/control.c b/monitor/control.c
index f6b2291..9bbdc37 100644
--- a/monitor/control.c
+++ b/monitor/control.c
@@ -57,7 +57,7 @@
 
 static struct btsnoop *btsnoop_file = NULL;
 static bool hcidump_fallback = false;
-static int mgmt_control_fd = -1;
+static bool decode_control = true;
 
 struct control_data {
 	uint16_t channel;
@@ -798,6 +798,9 @@ static void mgmt_advertising_removed(uint16_t len, const void *buf)
 
 void control_message(uint16_t opcode, const void *data, uint16_t size)
 {
+	if (!decode_control)
+		return;
+
 	switch (opcode) {
 	case MGMT_EV_INDEX_ADDED:
 		mgmt_index_added(size, data);
@@ -1044,7 +1047,7 @@ static int open_channel(uint16_t channel)
 
 	mainloop_add_fd(data->fd, EPOLLIN, data_callback, data, free_data);
 
-	return data->fd;
+	return 0;
 }
 
 static void client_callback(int fd, uint32_t events, void *user_data)
@@ -1447,16 +1450,12 @@ int control_tracing(void)
 		return 0;
 	}
 
-	mgmt_control_fd = open_channel(HCI_CHANNEL_CONTROL);
+	open_channel(HCI_CHANNEL_CONTROL);
 
 	return 0;
 }
 
-void control_disable_legacy(void)
+void control_disable_decoding(void)
 {
-	if (mgmt_control_fd < 0)
-		return;
-
-	close(mgmt_control_fd);
-	mgmt_control_fd = -1;
+	decode_control = false;
 }
diff --git a/monitor/control.h b/monitor/control.h
index 05db635..630a852 100644
--- a/monitor/control.h
+++ b/monitor/control.h
@@ -29,6 +29,6 @@ void control_reader(const char *path);
 void control_server(const char *path);
 int control_tty(const char *path, unsigned int speed);
 int control_tracing(void);
-void control_disable_legacy(void);
+void control_disable_decoding(void);
 
 void control_message(uint16_t opcode, const void *data, uint16_t size);
diff --git a/monitor/packet.c b/monitor/packet.c
index 7ef0157..9dc709e 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -3898,7 +3898,7 @@ void packet_monitor(struct timeval *tv, struct ucred *cred,
 					data + sizeof(*ul) + ul->ident_len);
 		break;
 	case BTSNOOP_OPCODE_CTRL_OPEN:
-		control_disable_legacy();
+		control_disable_decoding();
 		packet_ctrl_open(tv, cred, index, data, size);
 		break;
 	case BTSNOOP_OPCODE_CTRL_CLOSE: