From c3f7c0b284aa2865ba69af0919348ba644dbee5f Mon Sep 17 00:00:00 2001 From: Bret Ambrose Date: Mon, 29 Apr 2024 14:57:52 -0700 Subject: [PATCH] Mqtt311 support + workaround sphinx 7.3 issues --- .github/workflows/ci.yml | 2 +- .github/workflows/docs.yml | 2 +- awscrt/mqtt.py | 8 ++++++-- source/mqtt_client_connection.c | 8 ++++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96b1f06c2..c2d00a14d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -272,7 +272,7 @@ jobs: submodules: true - name: Check docs run: | - python3 -m pip install sphinx + python3 -m pip install sphinx==7.2.6 python3 -m pip install --verbose . ./scripts/make-docs.py diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a0ca31620..1a28f6464 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ jobs: - name: Update docs branch run: | - python3 -m pip install sphinx + python3 -m pip install sphinx==7.2.6 python3 -m pip install --verbose . ./scripts/make-docs.py diff --git a/awscrt/mqtt.py b/awscrt/mqtt.py index 5a96f5632..7529168ea 100644 --- a/awscrt/mqtt.py +++ b/awscrt/mqtt.py @@ -444,11 +444,15 @@ def _on_connection_resumed(self, return_code, session_present): def _ws_handshake_transform(self, http_request_binding, http_headers_binding, native_userdata): if self._ws_handshake_transform_cb is None: - _awscrt.mqtt_ws_handshake_transform_complete(None, native_userdata) + _awscrt.mqtt_ws_handshake_transform_complete(None, native_userdata, 0) return def _on_complete(f): - _awscrt.mqtt_ws_handshake_transform_complete(f.exception(), native_userdata) + error_code = 0 + hs_exception = f.exception() + if isinstance(hs_exception, awscrt.exceptions.AwsCrtError): + error_code = hs_exception.code + _awscrt.mqtt_ws_handshake_transform_complete(f.exception(), native_userdata, error_code) future = Future() future.add_done_callback(_on_complete) diff --git a/source/mqtt_client_connection.c b/source/mqtt_client_connection.c index 70da32835..9eb73a950 100644 --- a/source/mqtt_client_connection.c +++ b/source/mqtt_client_connection.c @@ -615,13 +615,13 @@ PyObject *aws_py_mqtt_ws_handshake_transform_complete(PyObject *self, PyObject * PyObject *exception_py; PyObject *ws_transform_capsule; - if (!PyArg_ParseTuple(args, "OO", &exception_py, &ws_transform_capsule)) { + int error_code = AWS_ERROR_SUCCESS; + if (!PyArg_ParseTuple(args, "OOi", &exception_py, &ws_transform_capsule, &error_code)) { return NULL; } - int error_code = AWS_ERROR_SUCCESS; - if (exception_py != Py_None) { - /* TODO: Translate Python exception to aws error. In the meantime here's a catch-all. */ + if (exception_py != Py_None && error_code == AWS_ERROR_SUCCESS) { + /* Fallback code for if the error source was outside the CRT native implementation */ error_code = AWS_ERROR_HTTP_CALLBACK_FAILURE; }