#include "qmi-errors.h"
#include "qmi-errors.c"
+bool cancel_all_requests = false;
+
#define __qmi_service(_n) [__##_n] = _n
static const uint8_t qmi_services[__QMI_SERVICE_LAST] = {
__qmi_services
req->pending = false;
list_del(&req->list);
- tlv_buf = qmi_msg_get_tlv_buf(msg, &tlv_len);
- req->ret = qmi_check_message_status(tlv_buf, tlv_len);
- if (req->ret)
- msg = NULL;
+ if (msg) {
+ tlv_buf = qmi_msg_get_tlv_buf(msg, &tlv_len);
+ req->ret = qmi_check_message_status(tlv_buf, tlv_len);
+ if (req->ret)
+ msg = NULL;
+ } else {
+ req->ret = QMI_ERROR_CANCELLED;
+ }
if (req->cb && (msg || !req->no_error_cb))
req->cb(qmi, req, msg);
cancelled = uloop_cancelled;
uloop_cancelled = false;
uloop_run();
+
+ if (cancel_all_requests)
+ qmi_request_cancel(qmi, req);
+
uloop_cancelled = cancelled;
}