|
|
@ -895,29 +895,24 @@ int db__message_reconnect_reset(struct mosquitto *context)
|
|
|
|
|
|
|
|
|
|
|
|
int db__message_remove_incoming(struct mosquitto* context, uint16_t mid)
|
|
|
|
int db__message_remove_incoming(struct mosquitto* context, uint16_t mid)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
struct mosquitto_client_msg* tail, * tmp;
|
|
|
|
struct mosquitto_client_msg *tail, *tmp;
|
|
|
|
bool deleted = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!context) return MOSQ_ERR_INVAL;
|
|
|
|
if(!context) return MOSQ_ERR_INVAL;
|
|
|
|
|
|
|
|
|
|
|
|
DL_FOREACH_SAFE(context->msgs_in.inflight, tail, tmp) {
|
|
|
|
DL_FOREACH_SAFE(context->msgs_in.inflight, tail, tmp){
|
|
|
|
if (tail->mid == mid) {
|
|
|
|
if(tail->mid == mid) {
|
|
|
|
if (tail->store->qos != 2) {
|
|
|
|
if(tail->store->qos != 2){
|
|
|
|
return MOSQ_ERR_PROTOCOL;
|
|
|
|
return MOSQ_ERR_PROTOCOL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
db__message_remove(&context->msgs_in, tail);
|
|
|
|
db__message_remove(&context->msgs_in, tail);
|
|
|
|
deleted = true;
|
|
|
|
return MOSQ_ERR_SUCCESS;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (deleted) {
|
|
|
|
return MOSQ_ERR_NOT_FOUND;
|
|
|
|
return MOSQ_ERR_SUCCESS;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
return MOSQ_ERR_NOT_FOUND;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int db__message_release_incoming(struct mosquitto *context, uint16_t mid)
|
|
|
|
int db__message_release_incoming(struct mosquitto *context, uint16_t mid)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
struct mosquitto_client_msg *tail, *tmp;
|
|
|
|
struct mosquitto_client_msg *tail, *tmp;
|
|
|
|