diff --git a/monitor/att.c b/monitor/att.c
index f1af420..10d3d9e 100644
--- a/monitor/att.c
+++ b/monitor/att.c
return;
handler = get_handler(attr);
- if (!handler)
+ if (!handler || !handler->read)
return;
conn = packet_get_conn_data(frame->handle);
data = conn->data;
- read = queue_find(data->reads, match_read_frame, frame);
+ read = queue_remove_if(data->reads, match_read_frame, (void *)frame);
if (!read)
return;
read->func(frame);
+
+ free(read);
}
static void att_read_blob_req(const struct l2cap_frame *frame)