From ae325a847c3763c1f07b21bc83dd42ed48375b57 Mon Sep 17 00:00:00 2001 From: Igor Abdrakhimov Date: Wed, 30 Apr 2025 12:38:07 -0700 Subject: [PATCH 1/3] Update aws-c-mqtt --- crt/aws-c-mqtt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crt/aws-c-mqtt b/crt/aws-c-mqtt index fb651a4a5..9fc2f573c 160000 --- a/crt/aws-c-mqtt +++ b/crt/aws-c-mqtt @@ -1 +1 @@ -Subproject commit fb651a4a59f28384fdb4938524192433492dead0 +Subproject commit 9fc2f573c0fb608c052230d4f2495725d7252285 From aca159cc63187426a61e6c1cc8e4c18db2d73d71 Mon Sep 17 00:00:00 2001 From: Igor Abdrakhimov Date: Wed, 30 Apr 2025 12:45:45 -0700 Subject: [PATCH 2/3] Fix incoming publish callback --- source/mqtt_request_response.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/source/mqtt_request_response.c b/source/mqtt_request_response.c index 5dee54f5b..b41380121 100644 --- a/source/mqtt_request_response.c +++ b/source/mqtt_request_response.c @@ -352,8 +352,7 @@ static void s_aws_mqtt_make_request_binding_destroy(struct aws_mqtt_make_request } static void s_on_mqtt_request_complete( - const struct aws_byte_cursor *response_topic, - const struct aws_byte_cursor *payload, + const struct aws_mqtt_rr_incoming_publish_event *publish_event, int error_code, void *user_data) { @@ -368,10 +367,10 @@ static void s_on_mqtt_request_complete( request_binding->on_request_complete_callback, "(is#y#)", /* i */ error_code, - /* s */ response_topic ? response_topic->ptr : NULL, - /* # */ response_topic ? response_topic->len : 0, - /* y */ payload ? payload->ptr : NULL, - /* # */ payload ? payload->len : 0); + /* s */ publish_event ? publish_event->topic.ptr : NULL, + /* # */ publish_event ? publish_event->topic.len : 0, + /* y */ publish_event ? publish_event->payload.ptr : NULL, + /* # */ publish_event ? publish_event->payload.len : 0); if (!result) { PyErr_WriteUnraisable(PyErr_Occurred()); } @@ -467,7 +466,7 @@ PyObject *aws_py_mqtt_request_response_client_make_request(PyObject *self, PyObj }; if (aws_mqtt_request_response_client_submit_request(client_binding->native, &request_options)) { - s_on_mqtt_request_complete(NULL, NULL, aws_last_error(), request_binding); + s_on_mqtt_request_complete(NULL, aws_last_error(), request_binding); } } @@ -551,8 +550,7 @@ static void s_aws_mqtt_streaming_operation_subscription_status_callback_python( } static void s_aws_mqtt_streaming_operation_incoming_publish_callback_python( - struct aws_byte_cursor payload, - struct aws_byte_cursor topic, + const struct aws_mqtt_rr_incoming_publish_event *publish_event, void *user_data) { struct mqtt_streaming_operation_binding *stream_binding = user_data; @@ -565,10 +563,10 @@ static void s_aws_mqtt_streaming_operation_incoming_publish_callback_python( PyObject *result = PyObject_CallFunction( stream_binding->incoming_publish_callable, "(s#y#)", - /* s */ topic.ptr, - /* # */ topic.len, - /* y */ payload.ptr, - /* # */ payload.len); + /* s */ publish_event->topic.ptr, + /* # */ publish_event->topic.len, + /* y */ publish_event->payload.ptr, + /* # */ publish_event->payload.len); if (!result) { PyErr_WriteUnraisable(PyErr_Occurred()); } @@ -673,4 +671,4 @@ struct aws_mqtt_rr_client_operation *aws_py_get_mqtt_streaming_operation(PyObjec s_capsule_name_mqtt_streaming_operation, "StreamingOperation", mqtt_streaming_operation_binding); -} \ No newline at end of file +} From 149166ccb59cf1afde1d7c30709a584d9f516e03 Mon Sep 17 00:00:00 2001 From: Igor Abdrakhimov Date: Wed, 30 Apr 2025 14:16:06 -0700 Subject: [PATCH 3/3] Add assert --- source/mqtt_request_response.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/mqtt_request_response.c b/source/mqtt_request_response.c index b41380121..fd6d67260 100644 --- a/source/mqtt_request_response.c +++ b/source/mqtt_request_response.c @@ -553,6 +553,8 @@ static void s_aws_mqtt_streaming_operation_incoming_publish_callback_python( const struct aws_mqtt_rr_incoming_publish_event *publish_event, void *user_data) { + AWS_FATAL_ASSERT(publish_event != NULL); + struct mqtt_streaming_operation_binding *stream_binding = user_data; PyGILState_STATE state;