From 4883879d38c8f6811e411b2ba3a2db1e473a3a77 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 26 Jun 2024 10:20:42 +0200 Subject: [PATCH 1/5] MbedClient: remove configureSocket after write --- libraries/SocketWrapper/src/MbedClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index 2bb933350..fa13d2c08 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -219,7 +219,7 @@ size_t arduino::MbedClient::write(const uint8_t *buf, size_t size) { do { ret = sock->send(buf, size); } while ((ret != size && ret == NSAPI_ERROR_WOULD_BLOCK) && connected()); - configureSocket(sock); + sock->set_blocking(false); return size; } From f7d9db986ecd9e7323b2839dc61b9eab22239e22 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 26 Jun 2024 10:24:01 +0200 Subject: [PATCH 2/5] MbedClient: do not retry writes --- libraries/SocketWrapper/src/MbedClient.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index fa13d2c08..331a1484b 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -215,12 +215,9 @@ size_t arduino::MbedClient::write(const uint8_t *buf, size_t size) { sock->set_blocking(true); sock->set_timeout(SOCKET_TIMEOUT); - int ret = NSAPI_ERROR_WOULD_BLOCK; - do { - ret = sock->send(buf, size); - } while ((ret != size && ret == NSAPI_ERROR_WOULD_BLOCK) && connected()); + int ret = sock->send(buf, size); sock->set_blocking(false); - return size; + return ret >= 0 ? ret : 0; } int arduino::MbedClient::available() { From 4f909a73dcd78d741e04b1664d22366d948e3f4e Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 26 Jun 2024 17:18:10 +0200 Subject: [PATCH 3/5] MbedClient: use SOCKET_TIMEOUT to initialize _timeout --- libraries/SocketWrapper/src/MbedClient.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index 331a1484b..37768d5f8 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -6,7 +6,7 @@ arduino::MbedClient::MbedClient() : _status(false), - _timeout(0) { + _timeout(SOCKET_TIMEOUT) { } uint8_t arduino::MbedClient::status() { @@ -214,7 +214,7 @@ size_t arduino::MbedClient::write(const uint8_t *buf, size_t size) { return 0; sock->set_blocking(true); - sock->set_timeout(SOCKET_TIMEOUT); + sock->set_timeout(_timeout); int ret = sock->send(buf, size); sock->set_blocking(false); return ret >= 0 ? ret : 0; From 343e65bb13c588ac03cfd284ada33d8d0b70fd32 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 26 Jun 2024 17:19:51 +0200 Subject: [PATCH 4/5] MbedClient: configureSocket, remove set_timeout call --- libraries/SocketWrapper/src/MbedClient.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index 37768d5f8..7afde9be9 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -60,7 +60,6 @@ void arduino::MbedClient::setSocket(Socket *_sock) { } void arduino::MbedClient::configureSocket(Socket *_s) { - _s->set_timeout(_timeout); _s->set_blocking(false); _s->getpeername(&address); From 70e3d5db465a355e6249f0f14204bcea4bd1453c Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 27 Jun 2024 11:42:41 +0200 Subject: [PATCH 5/5] MbedClient: write, remove set_blocking call before set_timeout --- libraries/SocketWrapper/src/MbedClient.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index 7afde9be9..913ccf0e7 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -212,7 +212,6 @@ size_t arduino::MbedClient::write(const uint8_t *buf, size_t size) { if (sock == nullptr) return 0; - sock->set_blocking(true); sock->set_timeout(_timeout); int ret = sock->send(buf, size); sock->set_blocking(false);