Skip to content

Commit 53819fc

Browse files
JAndrassypennam
authored andcommitted
SocketWrapper MbedClient debugging readSocket
1 parent 68d70a8 commit 53819fc

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

libraries/SocketWrapper/src/MbedClient.cpp

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,30 @@ void arduino::MbedClient::readSocket() {
2222
int ret = NSAPI_ERROR_WOULD_BLOCK;
2323
do {
2424
mutex->lock();
25-
if (sock != nullptr && rxBuffer.availableForStore() == 0) {
25+
if (sock == nullptr) {
26+
mutex->unlock();
27+
goto cleanup;
28+
}
29+
if (rxBuffer.availableForStore() == 0) {
2630
mutex->unlock();
2731
yield();
2832
continue;
29-
} else if (sock == nullptr) {
30-
goto cleanup;
3133
}
3234
ret = sock->recv(data, rxBuffer.availableForStore());
3335
if (ret < 0 && ret != NSAPI_ERROR_WOULD_BLOCK) {
36+
mutex->unlock();
3437
goto cleanup;
3538
}
3639
if (ret == NSAPI_ERROR_WOULD_BLOCK || ret == 0) {
37-
yield();
3840
mutex->unlock();
39-
continue;
41+
break;
4042
}
4143
for (int i = 0; i < ret; i++) {
4244
rxBuffer.store_char(data[i]);
4345
}
4446
mutex->unlock();
4547
_status = true;
46-
} while (ret == NSAPI_ERROR_WOULD_BLOCK || ret > 0);
48+
} while (true);
4749
}
4850
cleanup:
4951
_status = false;
@@ -92,6 +94,7 @@ int arduino::MbedClient::connect(SocketAddress socketAddress) {
9294
}
9395

9496
if (static_cast<TCPSocket *>(sock)->open(getNetwork()) != NSAPI_ERROR_OK) {
97+
_status = false;
9598
return 0;
9699
}
97100

@@ -111,6 +114,7 @@ int arduino::MbedClient::connect(SocketAddress socketAddress) {
111114
configureSocket(sock);
112115
_status = true;
113116
} else {
117+
sock->close();
114118
_status = false;
115119
}
116120

@@ -145,6 +149,7 @@ int arduino::MbedClient::connectSSL(SocketAddress socketAddress) {
145149
}
146150

147151
if (static_cast<TLSSocket *>(sock)->open(getNetwork()) != NSAPI_ERROR_OK) {
152+
_status = false;
148153
return 0;
149154
}
150155

@@ -176,6 +181,7 @@ int arduino::MbedClient::connectSSL(SocketAddress socketAddress) {
176181
configureSocket(sock);
177182
_status = true;
178183
} else {
184+
sock->close();
179185
_status = false;
180186
}
181187

@@ -221,8 +227,9 @@ int arduino::MbedClient::available() {
221227
}
222228

223229
int arduino::MbedClient::read() {
224-
if (sock == nullptr)
230+
if (mutex == nullptr) {
225231
return -1;
232+
}
226233
mutex->lock();
227234
if (!available()) {
228235
mutex->unlock();
@@ -235,8 +242,9 @@ int arduino::MbedClient::read() {
235242
}
236243

237244
int arduino::MbedClient::read(uint8_t *data, size_t len) {
238-
if (sock == nullptr)
245+
if (mutex == nullptr) {
239246
return 0;
247+
}
240248
mutex->lock();
241249
int avail = available();
242250

@@ -258,7 +266,14 @@ int arduino::MbedClient::read(uint8_t *data, size_t len) {
258266
}
259267

260268
int arduino::MbedClient::peek() {
261-
return rxBuffer.peek();
269+
if (mutex == nullptr) {
270+
return 0;
271+
}
272+
mutex->lock();
273+
int res = rxBuffer.peek();
274+
mutex->unlock();
275+
276+
return res;
262277
}
263278

264279
void arduino::MbedClient::flush() {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy