From 04243050f7a09992dd34ca19c77390d160268fd5 Mon Sep 17 00:00:00 2001 From: Alan Carvalho de Assis Date: Fri, 12 May 2023 20:16:53 -0300 Subject: [PATCH] net/mqttc: Add support to detect MQTT connection This is a fix implemented by Pieter Conradie as described here: https://github.com/LiamBindle/MQTT-C/issues/163 --- .../mqttc/0001_add_connection_status.patch | 66 +++++++++++++++++++ netutils/mqttc/Makefile | 2 + 2 files changed, 68 insertions(+) create mode 100644 netutils/mqttc/0001_add_connection_status.patch diff --git a/netutils/mqttc/0001_add_connection_status.patch b/netutils/mqttc/0001_add_connection_status.patch new file mode 100644 index 000000000..01c49c0f7 --- /dev/null +++ b/netutils/mqttc/0001_add_connection_status.patch @@ -0,0 +1,66 @@ +diff -Naur MQTT-C_orig/include/mqtt.h MQTT-C/include/mqtt.h +--- MQTT-C_orig/include/mqtt.h 2021-03-29 14:53:52.000000000 -0300 ++++ MQTT-C/include/mqtt.h 2023-05-13 09:52:45.704346335 -0300 +@@ -1233,6 +1233,9 @@ + + /** @brief The sending message queue. */ + struct mqtt_message_queue mq; ++ ++ /** @brief Flag is set on connection event */ ++ bool event_connect; + }; + + /** +diff -Naur MQTT-C_orig/src/mqtt.c MQTT-C/src/mqtt.c +--- MQTT-C_orig/src/mqtt.c 2021-03-29 14:53:52.000000000 -0300 ++++ MQTT-C/src/mqtt.c 2023-05-13 10:00:36.725165859 -0300 +@@ -118,6 +118,10 @@ + + client->socketfd = sockfd; + ++ /* Indicate we are not connected yet */ ++ ++ client->event_connect = false; ++ + mqtt_mq_init(&client->mq, sendbuf, sendbufsz); + + client->recv_buffer.mem_start = recvbuf; +@@ -151,6 +155,10 @@ + + client->socketfd = (mqtt_pal_socket_handle) -1; + ++ /* Indicate we are not connected yet */ ++ ++ client->event_connect = false; ++ + mqtt_mq_init(&client->mq, NULL, 0); + + client->recv_buffer.mem_start = NULL; +@@ -179,6 +187,10 @@ + client->error = MQTT_ERROR_CONNECT_NOT_CALLED; + client->socketfd = socketfd; + ++ /* Indicate we are not connected yet */ ++ ++ client->event_connect = false; ++ + mqtt_mq_init(&client->mq, sendbuf, sendbufsz); + + client->recv_buffer.mem_start = recvbuf; +@@ -592,6 +604,7 @@ + case MQTT_CONTROL_PUBCOMP: + case MQTT_CONTROL_DISCONNECT: + msg->state = MQTT_QUEUED_COMPLETE; ++ client->event_connect = false; + break; + case MQTT_CONTROL_PUBLISH: + inspected = ( MQTT_PUBLISH_QOS_MASK & (msg->start[0]) ) >> 1; /* qos */ +@@ -732,6 +745,8 @@ + mqtt_recv_ret = MQTT_ERROR_CONNECTION_REFUSED; + } + break; ++ } else { ++ client->event_connect = true; + } + break; + case MQTT_CONTROL_PUBLISH: diff --git a/netutils/mqttc/Makefile b/netutils/mqttc/Makefile index 22d5c77c9..243f22eb3 100644 --- a/netutils/mqttc/Makefile +++ b/netutils/mqttc/Makefile @@ -37,6 +37,8 @@ $(MQTTC_TARBALL): $(MQTTC_UNPACK): $(MQTTC_TARBALL) $(Q) tar zxf $(MQTTC_TARBALL) $(Q) mv MQTT-C-$(MQTTC_VERSION) $(MQTTC_UNPACK) + $(Q) echo "Patching $(MQTTC_UNPACK)" + $(Q) cat 0001_add_connection_status.patch | patch -s -N -d $(MQTTC_UNPACK) -p1 $(Q) touch $(MQTTC_UNPACK) # Download and unpack tarball if no git repo found