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

+24-9
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)