If there is an error during execute write we should drop all outstanding prep_write data. This patch fix that. --- src/shared/gatt-server.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/shared/gatt-server.c b/src/shared/gatt-server.c index a32aeb1..49dced9 100644 --- a/src/shared/gatt-server.c +++ b/src/shared/gatt-server.c @@ -1204,6 +1204,9 @@ static void exec_next_prep_write(struct bt_gatt_server *server, err = BT_ATT_ERROR_UNLIKELY; error: + queue_remove_all(server->prep_queue, NULL, NULL, + prep_write_data_destroy); + bt_att_send_error_rsp(server->att, BT_ATT_OP_EXEC_WRITE_REQ, ehandle, err); } @@ -1248,6 +1251,8 @@ static void exec_write_cb(uint8_t opcode, const void *pdu, return; error: + queue_remove_all(server->prep_queue, NULL, NULL, + prep_write_data_destroy); bt_att_send_error_rsp(server->att, opcode, 0, ecode); } -- 2.5.0 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html