diff --git a/src/shared/gatt-helpers.c b/src/shared/gatt-helpers.c
index 2d6088e..45c620c 100644
--- a/src/shared/gatt-helpers.c
+++ b/src/shared/gatt-helpers.c
static void discovery_op_complete(struct bt_gatt_request *op, bool success,
uint8_t ecode)
{
+ /* Reset success if there is some result to report */
+ if (ecode == BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND && op->result_head)
+ success = true;
+
if (op->callback)
op->callback(success, ecode, success ? op->result_head : NULL,
op->user_data);
if (opcode == BT_ATT_OP_ERROR_RSP) {
success = false;
att_ecode = process_error(pdu, length);
-
- if (att_ecode == BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND &&
- op->result_head)
- goto success;
-
goto done;
}
put_le16(op->end_handle,
cur_result->pdu + length - data_length + 1);
-success:
success = true;
done:
if (opcode == BT_ATT_OP_ERROR_RSP) {
success = false;
att_ecode = process_error(pdu, length);
-
- if (att_ecode == BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND &&
- op->result_head)
- goto success;
-
goto done;
}
goto done;
}
-success:
- success = true;
+ success = false;
done:
discovery_op_complete(op, success, att_ecode);
if (opcode == BT_ATT_OP_ERROR_RSP) {
att_ecode = process_error(pdu, length);
-
- if (att_ecode == BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND &&
- op->result_head)
- goto done;
-
success = false;
goto failed;
}
goto failed;
}
-done:
success = true;
failed:
if (opcode == BT_ATT_OP_ERROR_RSP) {
success = false;
att_ecode = process_error(pdu, length);
-
- if (att_ecode == BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND &&
- op->result_head)
- goto success;
-
goto done;
}
goto done;
}
-success:
- success = true;
-
done:
discovery_op_complete(op, success, att_ecode);
}
if (opcode == BT_ATT_OP_ERROR_RSP) {
att_ecode = process_error(pdu, length);
-
- if (att_ecode == BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND &&
- op->result_head)
- success = true;
- else
- success = false;
-
+ success = false;
goto done;
}
if (opcode == BT_ATT_OP_ERROR_RSP) {
success = false;
att_ecode = process_error(pdu, length);
-
- if (att_ecode == BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND &&
- op->result_head)
- goto success;
-
goto done;
}
return;
success = false;
- goto done;
}
-success:
success = true;
done: