From f3590f3020d079d6a26b4c8a452783ad54567b97 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Mon, 15 Nov 2021 22:29:19 +0000 Subject: [PATCH] Don't pass NULL to printf %s. This is undefined behaviour, and some platforms don't like it. Issue #2355. Thanks to CJ Lee. --- lib/handle_auth.c | 2 +- lib/handle_connack.c | 2 +- lib/handle_ping.c | 6 +++--- lib/handle_pubackcomp.c | 6 +++--- lib/handle_publish.c | 2 +- lib/handle_pubrec.c | 6 +++--- lib/handle_pubrel.c | 4 ++-- lib/handle_suback.c | 4 ++-- lib/handle_unsuback.c | 4 ++-- lib/mosquitto_internal.h | 2 ++ lib/send_connect.c | 4 ++-- lib/send_disconnect.c | 6 +++--- lib/send_mosq.c | 24 ++++++++++++------------ lib/send_publish.c | 8 ++++---- lib/send_subscribe.c | 4 ++-- lib/send_unsubscribe.c | 4 ++-- 16 files changed, 45 insertions(+), 43 deletions(-) diff --git a/lib/handle_auth.c b/lib/handle_auth.c index c1cc6f28..dd8b2f7c 100644 --- a/lib/handle_auth.c +++ b/lib/handle_auth.c @@ -36,7 +36,7 @@ int handle__auth(struct mosquitto *mosq) mosquitto_property *properties = NULL; if(!mosq) return MOSQ_ERR_INVAL; - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received AUTH", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received AUTH", SAFE_PRINT(mosq->id)); if(mosq->protocol != mosq_p_mqtt5){ return MOSQ_ERR_PROTOCOL; diff --git a/lib/handle_connack.c b/lib/handle_connack.c index 4d77e46d..4c2ec00e 100644 --- a/lib/handle_connack.c +++ b/lib/handle_connack.c @@ -32,7 +32,7 @@ Contributors: static void connack_callback(struct mosquitto *mosq, uint8_t reason_code, uint8_t connect_flags, const mosquitto_property *properties) { - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received CONNACK (%d)", mosq->id, reason_code); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received CONNACK (%d)", SAFE_PRINT(mosq->id), reason_code); if(reason_code == MQTT_RC_SUCCESS){ mosq->reconnects = 0; } diff --git a/lib/handle_ping.c b/lib/handle_ping.c index 8ca3646e..545e2784 100644 --- a/lib/handle_ping.c +++ b/lib/handle_ping.c @@ -49,7 +49,7 @@ int handle__pingreq(struct mosquitto *mosq) } #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Received PINGREQ from %s", mosq->id); + log__printf(NULL, MOSQ_LOG_DEBUG, "Received PINGREQ from %s", SAFE_PRINT(mosq->id)); #else return MOSQ_ERR_PROTOCOL; #endif @@ -69,9 +69,9 @@ int handle__pingresp(struct mosquitto *mosq) if(mosq->bridge == NULL){ return MOSQ_ERR_PROTOCOL; } - log__printf(NULL, MOSQ_LOG_DEBUG, "Received PINGRESP from %s", mosq->id); + log__printf(NULL, MOSQ_LOG_DEBUG, "Received PINGRESP from %s", SAFE_PRINT(mosq->id)); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received PINGRESP", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received PINGRESP", SAFE_PRINT(mosq->id)); #endif return MOSQ_ERR_SUCCESS; } diff --git a/lib/handle_pubackcomp.c b/lib/handle_pubackcomp.c index 2bc808cd..b2dcf7ee 100644 --- a/lib/handle_pubackcomp.c +++ b/lib/handle_pubackcomp.c @@ -119,20 +119,20 @@ int handle__pubackcomp(struct mosquitto *mosq, const char *type) } #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Received %s from %s (Mid: %d, RC:%d)", type, mosq->id, mid, reason_code); + log__printf(NULL, MOSQ_LOG_DEBUG, "Received %s from %s (Mid: %d, RC:%d)", type, SAFE_PRINT(mosq->id), mid, reason_code); /* Immediately free, we don't do anything with Reason String or User Property at the moment */ mosquitto_property_free_all(&properties); rc = db__message_delete_outgoing(mosq, mid, mosq_ms_wait_for_pubcomp, qos); if(rc == MOSQ_ERR_NOT_FOUND){ - log__printf(mosq, MOSQ_LOG_WARNING, "Warning: Received %s from %s for an unknown packet identifier %d.", type, mosq->id, mid); + log__printf(mosq, MOSQ_LOG_WARNING, "Warning: Received %s from %s for an unknown packet identifier %d.", type, SAFE_PRINT(mosq->id), mid); return MOSQ_ERR_SUCCESS; }else{ return rc; } #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received %s (Mid: %d, RC:%d)", mosq->id, type, mid, reason_code); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received %s (Mid: %d, RC:%d)", SAFE_PRINT(mosq->id), type, mid, reason_code); rc = message__delete(mosq, mid, mosq_md_out, qos); if(rc == MOSQ_ERR_SUCCESS){ diff --git a/lib/handle_publish.c b/lib/handle_publish.c index 5bd2ede7..7864b8af 100644 --- a/lib/handle_publish.c +++ b/lib/handle_publish.c @@ -115,7 +115,7 @@ int handle__publish(struct mosquitto *mosq) } log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received PUBLISH (d%d, q%d, r%d, m%d, '%s', ... (%ld bytes))", - mosq->id, message->dup, message->msg.qos, message->msg.retain, + SAFE_PRINT(mosq->id), message->dup, message->msg.qos, message->msg.retain, message->msg.mid, message->msg.topic, (long)message->msg.payloadlen); diff --git a/lib/handle_pubrec.c b/lib/handle_pubrec.c index b94ca009..d561b0b4 100644 --- a/lib/handle_pubrec.c +++ b/lib/handle_pubrec.c @@ -90,7 +90,7 @@ int handle__pubrec(struct mosquitto *mosq) } #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Received PUBREC from %s (Mid: %d)", mosq->id, mid); + log__printf(NULL, MOSQ_LOG_DEBUG, "Received PUBREC from %s (Mid: %d)", SAFE_PRINT(mosq->id), mid); if(reason_code < 0x80){ rc = db__message_update_outgoing(mosq, mid, mosq_ms_wait_for_pubcomp, 2); @@ -99,7 +99,7 @@ int handle__pubrec(struct mosquitto *mosq) } #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received PUBREC (Mid: %d)", mosq->id, mid); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received PUBREC (Mid: %d)", SAFE_PRINT(mosq->id), mid); if(reason_code < 0x80 || mosq->protocol != mosq_p_mqtt5){ rc = message__out_update(mosq, mid, mosq_ms_wait_for_pubcomp, 2); @@ -122,7 +122,7 @@ int handle__pubrec(struct mosquitto *mosq) } #endif if(rc == MOSQ_ERR_NOT_FOUND){ - log__printf(mosq, MOSQ_LOG_WARNING, "Warning: Received PUBREC from %s for an unknown packet identifier %d.", mosq->id, mid); + log__printf(mosq, MOSQ_LOG_WARNING, "Warning: Received PUBREC from %s for an unknown packet identifier %d.", SAFE_PRINT(mosq->id), mid); }else if(rc != MOSQ_ERR_SUCCESS){ return rc; } diff --git a/lib/handle_pubrel.c b/lib/handle_pubrel.c index cdbebf4a..010f970c 100644 --- a/lib/handle_pubrel.c +++ b/lib/handle_pubrel.c @@ -88,7 +88,7 @@ int handle__pubrel(struct mosquitto *mosq) } #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Received PUBREL from %s (Mid: %d)", mosq->id, mid); + log__printf(NULL, MOSQ_LOG_DEBUG, "Received PUBREL from %s (Mid: %d)", SAFE_PRINT(mosq->id), mid); /* Immediately free, we don't do anything with Reason String or User Property at the moment */ mosquitto_property_free_all(&properties); @@ -104,7 +104,7 @@ int handle__pubrel(struct mosquitto *mosq) rc = send__pubcomp(mosq, mid, NULL); if(rc) return rc; #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received PUBREL (Mid: %d)", mosq->id, mid); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received PUBREL (Mid: %d)", SAFE_PRINT(mosq->id), mid); rc = send__pubcomp(mosq, mid, NULL); if(rc){ diff --git a/lib/handle_suback.c b/lib/handle_suback.c index 5d3a4051..64a90135 100644 --- a/lib/handle_suback.c +++ b/lib/handle_suback.c @@ -59,9 +59,9 @@ int handle__suback(struct mosquitto *mosq) /* Client is not a bridge, so shouldn't be sending SUBACK */ return MOSQ_ERR_PROTOCOL; } - log__printf(NULL, MOSQ_LOG_DEBUG, "Received SUBACK from %s", mosq->id); + log__printf(NULL, MOSQ_LOG_DEBUG, "Received SUBACK from %s", SAFE_PRINT(mosq->id)); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received SUBACK", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received SUBACK", SAFE_PRINT(mosq->id)); #endif rc = packet__read_uint16(&mosq->in_packet, &mid); if(rc) return rc; diff --git a/lib/handle_unsuback.c b/lib/handle_unsuback.c index 5b004046..bc92cb04 100644 --- a/lib/handle_unsuback.c +++ b/lib/handle_unsuback.c @@ -59,9 +59,9 @@ int handle__unsuback(struct mosquitto *mosq) /* Client is not a bridge, so shouldn't be sending SUBACK */ return MOSQ_ERR_PROTOCOL; } - log__printf(NULL, MOSQ_LOG_DEBUG, "Received UNSUBACK from %s", mosq->id); + log__printf(NULL, MOSQ_LOG_DEBUG, "Received UNSUBACK from %s", SAFE_PRINT(mosq->id)); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received UNSUBACK", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s received UNSUBACK", SAFE_PRINT(mosq->id)); #endif rc = packet__read_uint16(&mosq->in_packet, &mid); if(rc) return rc; diff --git a/lib/mosquitto_internal.h b/lib/mosquitto_internal.h index e26ded7c..8d066388 100644 --- a/lib/mosquitto_internal.h +++ b/lib/mosquitto_internal.h @@ -72,6 +72,8 @@ typedef SOCKET mosq_sock_t; typedef int mosq_sock_t; #endif +#define SAFE_PRINT(A) (A)?(A):"null" + enum mosquitto_msg_direction { mosq_md_in = 0, mosq_md_out = 1 diff --git a/lib/send_connect.c b/lib/send_connect.c index d9a3257c..0976d497 100644 --- a/lib/send_connect.c +++ b/lib/send_connect.c @@ -204,10 +204,10 @@ int send__connect(struct mosquitto *mosq, uint16_t keepalive, bool clean_session mosq->keepalive = keepalive; #ifdef WITH_BROKER # ifdef WITH_BRIDGE - log__printf(mosq, MOSQ_LOG_DEBUG, "Bridge %s sending CONNECT", clientid); + log__printf(mosq, MOSQ_LOG_DEBUG, "Bridge %s sending CONNECT", SAFE_PRINT(clientid)); # endif #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending CONNECT", clientid); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending CONNECT", SAFE_PRINT(clientid)); #endif return packet__queue(mosq, packet); } diff --git a/lib/send_disconnect.c b/lib/send_disconnect.c index db2efe08..83ec2ea4 100644 --- a/lib/send_disconnect.c +++ b/lib/send_disconnect.c @@ -43,15 +43,15 @@ int send__disconnect(struct mosquitto *mosq, uint8_t reason_code, const mosquitt #ifdef WITH_BROKER # ifdef WITH_BRIDGE if(mosq->bridge){ - log__printf(mosq, MOSQ_LOG_DEBUG, "Bridge %s sending DISCONNECT", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Bridge %s sending DISCONNECT", SAFE_PRINT(mosq->id)); }else # else { - log__printf(mosq, MOSQ_LOG_DEBUG, "Sending DISCONNECT to %s (rc%d)", mosq->id, reason_code); + log__printf(mosq, MOSQ_LOG_DEBUG, "Sending DISCONNECT to %s (rc%d)", SAFE_PRINT(mosq->id), reason_code); } # endif #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending DISCONNECT", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending DISCONNECT", SAFE_PRINT(mosq->id)); #endif assert(mosq); packet = mosquitto__calloc(1, sizeof(struct mosquitto__packet)); diff --git a/lib/send_mosq.c b/lib/send_mosq.c index f4a3ef39..a8346495 100644 --- a/lib/send_mosq.c +++ b/lib/send_mosq.c @@ -46,9 +46,9 @@ int send__pingreq(struct mosquitto *mosq) int rc; assert(mosq); #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PINGREQ to %s", mosq->id); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PINGREQ to %s", SAFE_PRINT(mosq->id)); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PINGREQ", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PINGREQ", SAFE_PRINT(mosq->id)); #endif rc = send__simple_command(mosq, CMD_PINGREQ); if(rc == MOSQ_ERR_SUCCESS){ @@ -60,9 +60,9 @@ int send__pingreq(struct mosquitto *mosq) int send__pingresp(struct mosquitto *mosq) { #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PINGRESP to %s", mosq->id); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PINGRESP to %s", SAFE_PRINT(mosq->id)); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PINGRESP", mosq->id); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PINGRESP", SAFE_PRINT(mosq->id)); #endif return send__simple_command(mosq, CMD_PINGRESP); } @@ -70,9 +70,9 @@ int send__pingresp(struct mosquitto *mosq) int send__puback(struct mosquitto *mosq, uint16_t mid, uint8_t reason_code, const mosquitto_property *properties) { #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBACK to %s (m%d, rc%d)", mosq->id, mid, reason_code); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBACK to %s (m%d, rc%d)", SAFE_PRINT(mosq->id), mid, reason_code); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBACK (m%d, rc%d)", mosq->id, mid, reason_code); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBACK (m%d, rc%d)", SAFE_PRINT(mosq->id), mid, reason_code); #endif util__increment_receive_quota(mosq); /* We don't use Reason String or User Property yet. */ @@ -82,9 +82,9 @@ int send__puback(struct mosquitto *mosq, uint16_t mid, uint8_t reason_code, cons int send__pubcomp(struct mosquitto *mosq, uint16_t mid, const mosquitto_property *properties) { #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBCOMP to %s (m%d)", mosq->id, mid); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBCOMP to %s (m%d)", SAFE_PRINT(mosq->id), mid); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBCOMP (m%d)", mosq->id, mid); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBCOMP (m%d)", SAFE_PRINT(mosq->id), mid); #endif util__increment_receive_quota(mosq); /* We don't use Reason String or User Property yet. */ @@ -95,9 +95,9 @@ int send__pubcomp(struct mosquitto *mosq, uint16_t mid, const mosquitto_property int send__pubrec(struct mosquitto *mosq, uint16_t mid, uint8_t reason_code, const mosquitto_property *properties) { #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBREC to %s (m%d, rc%d)", mosq->id, mid, reason_code); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBREC to %s (m%d, rc%d)", SAFE_PRINT(mosq->id), mid, reason_code); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBREC (m%d, rc%d)", mosq->id, mid, reason_code); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBREC (m%d, rc%d)", SAFE_PRINT(mosq->id), mid, reason_code); #endif if(reason_code >= 0x80 && mosq->protocol == mosq_p_mqtt5){ util__increment_receive_quota(mosq); @@ -109,9 +109,9 @@ int send__pubrec(struct mosquitto *mosq, uint16_t mid, uint8_t reason_code, cons int send__pubrel(struct mosquitto *mosq, uint16_t mid, const mosquitto_property *properties) { #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBREL to %s (m%d)", mosq->id, mid); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBREL to %s (m%d)", SAFE_PRINT(mosq->id), mid); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBREL (m%d)", mosq->id, mid); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBREL (m%d)", SAFE_PRINT(mosq->id), mid); #endif /* We don't use Reason String or User Property yet. */ return send__command_with_mid(mosq, CMD_PUBREL|2, mid, false, 0, properties); diff --git a/lib/send_publish.c b/lib/send_publish.c index 148ee29c..1b5ffdaa 100644 --- a/lib/send_publish.c +++ b/lib/send_publish.c @@ -114,7 +114,7 @@ int send__publish(struct mosquitto *mosq, uint16_t mid, const char *topic, uint3 mosquitto__free(mapped_topic); mapped_topic = topic_temp; } - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBLISH to %s (d%d, q%d, r%d, m%d, '%s', ... (%ld bytes))", mosq->id, dup, qos, retain, mid, mapped_topic, (long)payloadlen); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBLISH to %s (d%d, q%d, r%d, m%d, '%s', ... (%ld bytes))", SAFE_PRINT(mosq->id), dup, qos, retain, mid, mapped_topic, (long)payloadlen); G_PUB_BYTES_SENT_INC(payloadlen); rc = send__real_publish(mosq, mid, mapped_topic, payloadlen, payload, qos, retain, dup, cmsg_props, store_props, expiry_interval); mosquitto__free(mapped_topic); @@ -124,10 +124,10 @@ int send__publish(struct mosquitto *mosq, uint16_t mid, const char *topic, uint3 } } #endif - log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBLISH to %s (d%d, q%d, r%d, m%d, '%s', ... (%ld bytes))", mosq->id, dup, qos, retain, mid, topic, (long)payloadlen); + log__printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBLISH to %s (d%d, q%d, r%d, m%d, '%s', ... (%ld bytes))", SAFE_PRINT(mosq->id), dup, qos, retain, mid, topic, (long)payloadlen); G_PUB_BYTES_SENT_INC(payloadlen); #else - log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBLISH (d%d, q%d, r%d, m%d, '%s', ... (%ld bytes))", mosq->id, dup, qos, retain, mid, topic, (long)payloadlen); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBLISH (d%d, q%d, r%d, m%d, '%s', ... (%ld bytes))", SAFE_PRINT(mosq->id), dup, qos, retain, mid, topic, (long)payloadlen); #endif return send__real_publish(mosq, mid, topic, payloadlen, payload, qos, retain, dup, cmsg_props, store_props, expiry_interval); @@ -175,7 +175,7 @@ int send__real_publish(struct mosquitto *mosq, uint16_t mid, const char *topic, } if(packet__check_oversize(mosq, packetlen)){ #ifdef WITH_BROKER - log__printf(NULL, MOSQ_LOG_NOTICE, "Dropping too large outgoing PUBLISH for %s (%d bytes)", mosq->id, packetlen); + log__printf(NULL, MOSQ_LOG_NOTICE, "Dropping too large outgoing PUBLISH for %s (%d bytes)", SAFE_PRINT(mosq->id), packetlen); #else log__printf(NULL, MOSQ_LOG_NOTICE, "Dropping too large outgoing PUBLISH (%d bytes)", packetlen); #endif diff --git a/lib/send_subscribe.c b/lib/send_subscribe.c index 9217dc5b..40e1d432 100644 --- a/lib/send_subscribe.c +++ b/lib/send_subscribe.c @@ -89,11 +89,11 @@ int send__subscribe(struct mosquitto *mosq, int *mid, int topic_count, char *con #ifdef WITH_BROKER # ifdef WITH_BRIDGE - log__printf(mosq, MOSQ_LOG_DEBUG, "Bridge %s sending SUBSCRIBE (Mid: %d, Topic: %s, QoS: %d, Options: 0x%02x)", mosq->id, local_mid, topic[0], topic_qos&0x03, topic_qos&0xFC); + log__printf(mosq, MOSQ_LOG_DEBUG, "Bridge %s sending SUBSCRIBE (Mid: %d, Topic: %s, QoS: %d, Options: 0x%02x)", SAFE_PRINT(mosq->id), local_mid, topic[0], topic_qos&0x03, topic_qos&0xFC); # endif #else for(i=0; iid, local_mid, topic[i], topic_qos&0x03, topic_qos&0xFC); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending SUBSCRIBE (Mid: %d, Topic: %s, QoS: %d, Options: 0x%02x)", SAFE_PRINT(mosq->id), local_mid, topic[i], topic_qos&0x03, topic_qos&0xFC); } #endif diff --git a/lib/send_unsubscribe.c b/lib/send_unsubscribe.c index 654f0ebe..0806b819 100644 --- a/lib/send_unsubscribe.c +++ b/lib/send_unsubscribe.c @@ -89,12 +89,12 @@ int send__unsubscribe(struct mosquitto *mosq, int *mid, int topic_count, char *c #ifdef WITH_BROKER # ifdef WITH_BRIDGE for(i=0; iid, local_mid, topic[i]); + log__printf(mosq, MOSQ_LOG_DEBUG, "Bridge %s sending UNSUBSCRIBE (Mid: %d, Topic: %s)", SAFE_PRINT(mosq->id), local_mid, topic[i]); } # endif #else for(i=0; iid, local_mid, topic[i]); + log__printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending UNSUBSCRIBE (Mid: %d, Topic: %s)", SAFE_PRINT(mosq->id), local_mid, topic[i]); } #endif return packet__queue(mosq, packet);