mirror of
https://github.com/eclipse/mosquitto.git
synced 2025-05-10 01:28:55 +08:00
Fix incorrect "out of memory" reporting of client disconnections
Closes #3253. Thanks to Abilio Marques.
This commit is contained in:
parent
cdf3c5bdca
commit
3b6ff74dd1
@ -295,16 +295,18 @@ int handle__publish(struct mosquitto *context)
|
|||||||
switch(stored->data.qos){
|
switch(stored->data.qos){
|
||||||
case 0:
|
case 0:
|
||||||
rc2 = sub__messages_queue(context->id, stored->data.topic, stored->data.qos, stored->data.retain, &stored);
|
rc2 = sub__messages_queue(context->id, stored->data.topic, stored->data.qos, stored->data.retain, &stored);
|
||||||
if(rc2 > 0) rc = 1;
|
if(rc2 > 0) rc = rc2;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
util__decrement_receive_quota(context);
|
util__decrement_receive_quota(context);
|
||||||
rc2 = sub__messages_queue(context->id, stored->data.topic, stored->data.qos, stored->data.retain, &stored);
|
rc2 = sub__messages_queue(context->id, stored->data.topic, stored->data.qos, stored->data.retain, &stored);
|
||||||
/* stored may now be free, so don't refer to it */
|
/* stored may now be free, so don't refer to it */
|
||||||
if(rc2 == MOSQ_ERR_SUCCESS || context->protocol != mosq_p_mqtt5){
|
if(rc2 == MOSQ_ERR_SUCCESS || context->protocol != mosq_p_mqtt5){
|
||||||
if(send__puback(context, mid, 0, NULL)) rc = 1;
|
rc2 = send__puback(context, mid, 0, NULL);
|
||||||
|
if(rc2) rc = rc2;
|
||||||
}else if(rc2 == MOSQ_ERR_NO_SUBSCRIBERS){
|
}else if(rc2 == MOSQ_ERR_NO_SUBSCRIBERS){
|
||||||
if(send__puback(context, mid, MQTT_RC_NO_MATCHING_SUBSCRIBERS, NULL)) rc = 1;
|
rc2 = send__puback(context, mid, MQTT_RC_NO_MATCHING_SUBSCRIBERS, NULL);
|
||||||
|
if(rc2) rc = rc2;
|
||||||
}else{
|
}else{
|
||||||
rc = rc2;
|
rc = rc2;
|
||||||
}
|
}
|
||||||
@ -326,8 +328,8 @@ int handle__publish(struct mosquitto *context)
|
|||||||
}else{
|
}else{
|
||||||
return MOSQ_ERR_PROTOCOL;
|
return MOSQ_ERR_PROTOCOL;
|
||||||
}
|
}
|
||||||
}else if(res == 1){
|
}else{
|
||||||
rc = 1;
|
rc = res;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -335,7 +337,7 @@ int handle__publish(struct mosquitto *context)
|
|||||||
db__message_write_queued_in(context);
|
db__message_write_queued_in(context);
|
||||||
return rc;
|
return rc;
|
||||||
process_bad_message:
|
process_bad_message:
|
||||||
rc = 1;
|
rc = MOSQ_ERR_UNKNOWN;
|
||||||
if(base_msg){
|
if(base_msg){
|
||||||
switch(base_msg->data.qos){
|
switch(base_msg->data.qos){
|
||||||
case 0:
|
case 0:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user