Skip to content

Commit cb3ffd0

Browse files
authored
Add full setsocketoption to WifiClient and WifiClientSecure (espressif#7030)
1 parent 12169d8 commit cb3ffd0

File tree

4 files changed

+17
-9
lines changed

4 files changed

+17
-9
lines changed

libraries/WiFi/src/WiFiClient.cpp

+8-7
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,14 @@ int WiFiClient::connect(const char *host, uint16_t port, int32_t timeout)
303303

304304
int WiFiClient::setSocketOption(int option, char* value, size_t len)
305305
{
306-
int res = setsockopt(fd(), SOL_SOCKET, option, value, len);
306+
return setSocketOption(SOL_SOCKET, option, (const void*)value, len);
307+
}
308+
309+
int WiFiClient::setSocketOption(int level, int option, const void* value, size_t len)
310+
{
311+
int res = setsockopt(fd(), level, option, value, len);
307312
if(res < 0) {
308-
log_e("%X : %d", option, errno);
313+
log_e("fail on %d, errno: %d, \"%s\"", fd(), errno, strerror(errno));
309314
}
310315
return res;
311316
}
@@ -330,11 +335,7 @@ int WiFiClient::setTimeout(uint32_t seconds)
330335

331336
int WiFiClient::setOption(int option, int *value)
332337
{
333-
int res = setsockopt(fd(), IPPROTO_TCP, option, (char *) value, sizeof(int));
334-
if(res < 0) {
335-
log_e("fail on fd %d, errno: %d, \"%s\"", fd(), errno, strerror(errno));
336-
}
337-
return res;
338+
return setSocketOption(IPPROTO_TCP, option, (const void*)value, sizeof(int));
338339
}
339340

340341
int WiFiClient::getOption(int option, int *value)

libraries/WiFi/src/WiFiClient.h

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ class WiFiClient : public ESPLwIPClient
8787
int fd() const;
8888

8989
int setSocketOption(int option, char* value, size_t len);
90+
int setSocketOption(int level, int option, const void* value, size_t len);
9091
int setOption(int option, int *value);
9192
int getOption(int option, int *value);
9293
int setTimeout(uint32_t seconds);

libraries/WiFiClientSecure/src/WiFiClientSecure.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -378,9 +378,14 @@ int WiFiClientSecure::setTimeout(uint32_t seconds)
378378
}
379379
int WiFiClientSecure::setSocketOption(int option, char* value, size_t len)
380380
{
381-
int res = setsockopt(sslclient->socket, SOL_SOCKET, option, value, len);
381+
return setSocketOption(SOL_SOCKET, option, (const void*)value, len);
382+
}
383+
384+
int WiFiClientSecure::setSocketOption(int level, int option, const void* value, size_t len)
385+
{
386+
int res = setsockopt(sslclient->socket, level, option, value, len);
382387
if(res < 0) {
383-
log_e("%X : %d", option, errno);
388+
log_e("fail on %d, errno: %d, \"%s\"", sslclient->socket, errno, strerror(errno));
384389
}
385390
return res;
386391
}

libraries/WiFiClientSecure/src/WiFiClientSecure.h

+1
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ class WiFiClientSecure : public WiFiClient
8181
bool getFingerprintSHA256(uint8_t sha256_result[32]) { return get_peer_fingerprint(sslclient, sha256_result); };
8282
int setTimeout(uint32_t seconds);
8383
int setSocketOption(int option, char* value, size_t len);
84+
int setSocketOption(int level, int option, const void* value, size_t len);
8485

8586
operator bool()
8687
{

0 commit comments

Comments
 (0)