diff --git a/lib/messages_mosq.c b/lib/messages_mosq.c index eb10dcab..7b9d9577 100644 --- a/lib/messages_mosq.c +++ b/lib/messages_mosq.c @@ -323,7 +323,7 @@ void _mosquitto_message_retry_check_actual(struct mosquitto *mosq, struct mosqui case mosq_ms_wait_for_pubcomp: messages->timestamp = now; messages->dup = true; - _mosquitto_send_pubrel(mosq, messages->msg.mid, true); + _mosquitto_send_pubrel(mosq, messages->msg.mid); break; default: break; diff --git a/lib/mosquitto.c b/lib/mosquitto.c index 1d347ba6..0b89b42c 100644 --- a/lib/mosquitto.c +++ b/lib/mosquitto.c @@ -613,7 +613,7 @@ int mosquitto_subscribe(struct mosquitto *mosq, int *mid, const char *sub, int q if(mosquitto_sub_topic_check(sub)) return MOSQ_ERR_INVAL; - return _mosquitto_send_subscribe(mosq, mid, false, sub, qos); + return _mosquitto_send_subscribe(mosq, mid, sub, qos); } int mosquitto_unsubscribe(struct mosquitto *mosq, int *mid, const char *sub) @@ -623,7 +623,7 @@ int mosquitto_unsubscribe(struct mosquitto *mosq, int *mid, const char *sub) if(mosquitto_sub_topic_check(sub)) return MOSQ_ERR_INVAL; - return _mosquitto_send_unsubscribe(mosq, mid, false, sub); + return _mosquitto_send_unsubscribe(mosq, mid, sub); } int mosquitto_tls_set(struct mosquitto *mosq, const char *cafile, const char *capath, const char *certfile, const char *keyfile, int (*pw_callback)(char *buf, int size, int rwflag, void *userdata)) diff --git a/lib/read_handle_shared.c b/lib/read_handle_shared.c index 3c560bb8..8a559092 100644 --- a/lib/read_handle_shared.c +++ b/lib/read_handle_shared.c @@ -109,7 +109,7 @@ int _mosquitto_handle_pubrec(struct mosquitto *mosq) rc = _mosquitto_message_out_update(mosq, mid, mosq_ms_wait_for_pubcomp); #endif if(rc) return rc; - rc = _mosquitto_send_pubrel(mosq, mid, false); + rc = _mosquitto_send_pubrel(mosq, mid); if(rc) return rc; return MOSQ_ERR_SUCCESS; diff --git a/lib/send_client_mosq.c b/lib/send_client_mosq.c index f5ea952a..181fee15 100644 --- a/lib/send_client_mosq.c +++ b/lib/send_client_mosq.c @@ -142,7 +142,7 @@ int _mosquitto_send_disconnect(struct mosquitto *mosq) return _mosquitto_send_simple_command(mosq, DISCONNECT); } -int _mosquitto_send_subscribe(struct mosquitto *mosq, int *mid, bool dup, const char *topic, uint8_t topic_qos) +int _mosquitto_send_subscribe(struct mosquitto *mosq, int *mid, const char *topic, uint8_t topic_qos) { /* FIXME - only deals with a single topic */ struct _mosquitto_packet *packet = NULL; @@ -158,7 +158,7 @@ int _mosquitto_send_subscribe(struct mosquitto *mosq, int *mid, bool dup, const packetlen = 2 + 2+strlen(topic) + 1; - packet->command = SUBSCRIBE | (dup<<3) | (1<<1); + packet->command = SUBSCRIBE | (1<<1); packet->remaining_length = packetlen; rc = _mosquitto_packet_alloc(packet); if(rc){ @@ -187,7 +187,7 @@ int _mosquitto_send_subscribe(struct mosquitto *mosq, int *mid, bool dup, const } -int _mosquitto_send_unsubscribe(struct mosquitto *mosq, int *mid, bool dup, const char *topic) +int _mosquitto_send_unsubscribe(struct mosquitto *mosq, int *mid, const char *topic) { /* FIXME - only deals with a single topic */ struct _mosquitto_packet *packet = NULL; @@ -203,7 +203,7 @@ int _mosquitto_send_unsubscribe(struct mosquitto *mosq, int *mid, bool dup, cons packetlen = 2 + 2+strlen(topic); - packet->command = UNSUBSCRIBE | (dup<<3) | (1<<1); + packet->command = UNSUBSCRIBE | (1<<1); packet->remaining_length = packetlen; rc = _mosquitto_packet_alloc(packet); if(rc){ diff --git a/lib/send_mosq.c b/lib/send_mosq.c index 81fc49a0..e65b0f64 100644 --- a/lib/send_mosq.c +++ b/lib/send_mosq.c @@ -185,14 +185,14 @@ int _mosquitto_send_pubrec(struct mosquitto *mosq, uint16_t mid) return _mosquitto_send_command_with_mid(mosq, PUBREC, mid, false); } -int _mosquitto_send_pubrel(struct mosquitto *mosq, uint16_t mid, bool dup) +int _mosquitto_send_pubrel(struct mosquitto *mosq, uint16_t mid) { #ifdef WITH_BROKER if(mosq) _mosquitto_log_printf(NULL, MOSQ_LOG_DEBUG, "Sending PUBREL to %s (Mid: %d)", mosq->id, mid); #else if(mosq) _mosquitto_log_printf(mosq, MOSQ_LOG_DEBUG, "Client %s sending PUBREL (Mid: %d)", mosq->id, mid); #endif - return _mosquitto_send_command_with_mid(mosq, PUBREL|2, mid, dup); + return _mosquitto_send_command_with_mid(mosq, PUBREL|2, mid, false); } /* For PUBACK, PUBCOMP, PUBREC, and PUBREL */ diff --git a/lib/send_mosq.h b/lib/send_mosq.h index 4500fac9..ff2c6b9d 100644 --- a/lib/send_mosq.h +++ b/lib/send_mosq.h @@ -30,8 +30,8 @@ int _mosquitto_send_puback(struct mosquitto *mosq, uint16_t mid); int _mosquitto_send_pubcomp(struct mosquitto *mosq, uint16_t mid); int _mosquitto_send_publish(struct mosquitto *mosq, uint16_t mid, const char *topic, uint32_t payloadlen, const void *payload, int qos, bool retain, bool dup); int _mosquitto_send_pubrec(struct mosquitto *mosq, uint16_t mid); -int _mosquitto_send_pubrel(struct mosquitto *mosq, uint16_t mid, bool dup); -int _mosquitto_send_subscribe(struct mosquitto *mosq, int *mid, bool dup, const char *topic, uint8_t topic_qos); -int _mosquitto_send_unsubscribe(struct mosquitto *mosq, int *mid, bool dup, const char *topic); +int _mosquitto_send_pubrel(struct mosquitto *mosq, uint16_t mid); +int _mosquitto_send_subscribe(struct mosquitto *mosq, int *mid, const char *topic, uint8_t topic_qos); +int _mosquitto_send_unsubscribe(struct mosquitto *mosq, int *mid, const char *topic); #endif diff --git a/src/database.c b/src/database.c index 5cda9482..c7a5504b 100644 --- a/src/database.c +++ b/src/database.c @@ -859,7 +859,7 @@ int mqtt3_db_message_write(struct mosquitto_db *db, struct mosquitto *context) break; case mosq_ms_resend_pubrel: - rc = _mosquitto_send_pubrel(context, mid, true); + rc = _mosquitto_send_pubrel(context, mid); if(!rc){ tail->state = mosq_ms_wait_for_pubcomp; }else{ diff --git a/src/read_handle_client.c b/src/read_handle_client.c index 25d7406b..febe27ab 100644 --- a/src/read_handle_client.c +++ b/src/read_handle_client.c @@ -70,11 +70,11 @@ int mqtt3_handle_connack(struct mosquitto_db *db, struct mosquitto *context) } for(i=0; ibridge->topic_count; i++){ if(context->bridge->topics[i].direction == bd_in || context->bridge->topics[i].direction == bd_both){ - if(_mosquitto_send_subscribe(context, NULL, false, context->bridge->topics[i].remote_topic, context->bridge->topics[i].qos)){ + if(_mosquitto_send_subscribe(context, NULL, context->bridge->topics[i].remote_topic, context->bridge->topics[i].qos)){ return 1; } }else{ - if(_mosquitto_send_unsubscribe(context, NULL, false, context->bridge->topics[i].remote_topic)){ + if(_mosquitto_send_unsubscribe(context, NULL, context->bridge->topics[i].remote_topic)){ /* direction = inwards only. This means we should not be subscribed * to the topic. It is possible that we used to be subscribed to * this topic so unsubscribe. */ diff --git a/test/broker/03-publish-b2c-disconnect-qos2.py b/test/broker/03-publish-b2c-disconnect-qos2.py index 25daa884..8a66434f 100755 --- a/test/broker/03-publish-b2c-disconnect-qos2.py +++ b/test/broker/03-publish-b2c-disconnect-qos2.py @@ -27,7 +27,6 @@ publish_packet = mosq_test.gen_publish("qos2/disconnect/test", qos=2, mid=mid, p publish_dup_packet = mosq_test.gen_publish("qos2/disconnect/test", qos=2, mid=mid, payload="disconnect-message", dup=True) pubrec_packet = mosq_test.gen_pubrec(mid) pubrel_packet = mosq_test.gen_pubrel(mid) -pubrel_dup_packet = mosq_test.gen_pubrel(mid, dup=True) pubcomp_packet = mosq_test.gen_pubcomp(mid) mid = 3266 @@ -61,7 +60,7 @@ try: sock.close() sock = mosq_test.do_client_connect(connect_packet, connack_packet) - if mosq_test.expect_packet(sock, "dup pubrel", pubrel_dup_packet): + if mosq_test.expect_packet(sock, "dup pubrel", pubrel_packet): sock.send(pubcomp_packet) rc = 0 sock.close() diff --git a/test/broker/03-publish-b2c-timeout-qos2.py b/test/broker/03-publish-b2c-timeout-qos2.py index 2249cd97..092299af 100755 --- a/test/broker/03-publish-b2c-timeout-qos2.py +++ b/test/broker/03-publish-b2c-timeout-qos2.py @@ -29,7 +29,6 @@ publish_packet = mosq_test.gen_publish("qos2/timeout/test", qos=2, mid=mid, payl publish_dup_packet = mosq_test.gen_publish("qos2/timeout/test", qos=2, mid=mid, payload="timeout-message", dup=True) pubrec_packet = mosq_test.gen_pubrec(mid) pubrel_packet = mosq_test.gen_pubrel(mid) -pubrel_dup_packet = mosq_test.gen_pubrel(mid, dup=True) pubcomp_packet = mosq_test.gen_pubcomp(mid) broker = mosq_test.start_broker(filename=os.path.basename(__file__)) @@ -54,7 +53,7 @@ try: # Wait for longer than 5 seconds to get republish with dup set # This is covered by the 8 second timeout - if mosq_test.expect_packet(sock, "dup pubrel", pubrel_dup_packet): + if mosq_test.expect_packet(sock, "dup pubrel", pubrel_packet): sock.send(pubcomp_packet) rc = 0 diff --git a/test/broker/06-bridge-br2b-disconnect-qos2.py b/test/broker/06-bridge-br2b-disconnect-qos2.py index 797bdc41..a0d6a9b2 100755 --- a/test/broker/06-bridge-br2b-disconnect-qos2.py +++ b/test/broker/06-bridge-br2b-disconnect-qos2.py @@ -38,7 +38,6 @@ publish_packet = mosq_test.gen_publish("bridge/disconnect/test", qos=2, mid=mid, publish_dup_packet = mosq_test.gen_publish("bridge/disconnect/test", qos=2, mid=mid, payload="disconnect-message", dup=True) pubrec_packet = mosq_test.gen_pubrec(mid) pubrel_packet = mosq_test.gen_pubrel(mid) -pubrel_dup_packet = mosq_test.gen_pubrel(mid, True) pubcomp_packet = mosq_test.gen_pubcomp(mid) ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -90,7 +89,7 @@ try: if mosq_test.expect_packet(bridge, "3rd subscribe", subscribe3_packet): bridge.send(suback3_packet) - if mosq_test.expect_packet(bridge, "2nd pubrel", pubrel_dup_packet): + if mosq_test.expect_packet(bridge, "2nd pubrel", pubrel_packet): bridge.send(pubcomp_packet) rc = 0 diff --git a/test/lib/03-publish-c2b-qos2-disconnect.py b/test/lib/03-publish-c2b-qos2-disconnect.py index 704f1807..9b36d064 100755 --- a/test/lib/03-publish-c2b-qos2-disconnect.py +++ b/test/lib/03-publish-c2b-qos2-disconnect.py @@ -28,7 +28,6 @@ publish_packet = mosq_test.gen_publish("pub/qos2/test", qos=2, mid=mid, payload= publish_dup_packet = mosq_test.gen_publish("pub/qos2/test", qos=2, mid=mid, payload="message", dup=True) pubrec_packet = mosq_test.gen_pubrec(mid) pubrel_packet = mosq_test.gen_pubrel(mid) -pubrel_dup_packet = mosq_test.gen_pubrel(mid, dup=True) pubcomp_packet = mosq_test.gen_pubcomp(mid) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -78,7 +77,7 @@ try: if mosq_test.expect_packet(conn, "connect", connect_packet): conn.send(connack_packet) - if mosq_test.expect_packet(conn, "retried pubrel", pubrel_dup_packet): + if mosq_test.expect_packet(conn, "retried pubrel", pubrel_packet): conn.send(pubcomp_packet) if mosq_test.expect_packet(conn, "disconnect", disconnect_packet): diff --git a/test/lib/03-publish-c2b-qos2-timeout.py b/test/lib/03-publish-c2b-qos2-timeout.py index f04368e7..0705fc63 100755 --- a/test/lib/03-publish-c2b-qos2-timeout.py +++ b/test/lib/03-publish-c2b-qos2-timeout.py @@ -46,7 +46,6 @@ publish_packet = mosq_test.gen_publish("pub/qos2/test", qos=2, mid=mid, payload= publish_dup_packet = mosq_test.gen_publish("pub/qos2/test", qos=2, mid=mid, payload="message", dup=True) pubrec_packet = mosq_test.gen_pubrec(mid) pubrel_packet = mosq_test.gen_pubrel(mid) -pubrel_dup_packet = mosq_test.gen_pubrel(mid, dup=True) pubcomp_packet = mosq_test.gen_pubcomp(mid) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -79,7 +78,7 @@ try: conn.send(pubrec_packet) if mosq_test.expect_packet(conn, "pubrel", pubrel_packet): - if mosq_test.expect_packet(conn, "dup pubrel", pubrel_dup_packet): + if mosq_test.expect_packet(conn, "dup pubrel", pubrel_packet): conn.send(pubcomp_packet) if mosq_test.expect_packet(conn, "disconnect", disconnect_packet):