diff --git a/libraries/WiFiS3/src/WiFiClient.cpp b/libraries/WiFiS3/src/WiFiClient.cpp index 3c8f9df7c..adb020053 100644 --- a/libraries/WiFiS3/src/WiFiClient.cpp +++ b/libraries/WiFiS3/src/WiFiClient.cpp @@ -39,16 +39,8 @@ void WiFiClient::getSocket() { /* -------------------------------------------------------------------------- */ int WiFiClient::connect(IPAddress ip, uint16_t port){ -/* -------------------------------------------------------------------------- */ - getSocket(); - if(_sock >= 0) { - string res = ""; - modem.begin(); - if(modem.write(string(PROMPT(_CLIENTCONNECTIP)),res, "%s%d,%s,%d\r\n" , CMD_WRITE(_CLIENTCONNECTIP), _sock, ip.toString().c_str(), port)) { - return 1; - } - } - return 0; +/* -------------------------------------------------------------------------- */ + return connect(ip.toString().c_str(), port); } /* -------------------------------------------------------------------------- */ @@ -58,9 +50,15 @@ int WiFiClient::connect(const char *host, uint16_t port){ if(_sock >= 0) { string res = ""; modem.begin(); + if (_connectionTimeout) { + if(modem.write(string(PROMPT(_CLIENTCONNECT)),res, "%s%d,%s,%d,%d\r\n" , CMD_WRITE(_CLIENTCONNECT), _sock, host,port, _connectionTimeout)) { + return 1; + } + } else { if(modem.write(string(PROMPT(_CLIENTCONNECTNAME)),res, "%s%d,%s,%d\r\n" , CMD_WRITE(_CLIENTCONNECTNAME), _sock, host,port)) { return 1; } + } } return 0; } diff --git a/libraries/WiFiS3/src/WiFiClient.h b/libraries/WiFiS3/src/WiFiClient.h index ab27ea29f..972b98b8a 100644 --- a/libraries/WiFiS3/src/WiFiClient.h +++ b/libraries/WiFiS3/src/WiFiClient.h @@ -62,12 +62,17 @@ class WiFiClient : public Client { virtual IPAddress remoteIP(); virtual uint16_t remotePort(); + void setConnectionTimeout(int timeout) { + _connectionTimeout = timeout; + } + friend class WiFiServer; using Print::write; protected: int _sock; + int _connectionTimeout = 0; void getSocket(); std::shared_ptr> rx_buffer; int _read(); diff --git a/libraries/WiFiS3/src/WiFiSSLClient.cpp b/libraries/WiFiS3/src/WiFiSSLClient.cpp index c1c451b7c..92b66f01b 100644 --- a/libraries/WiFiS3/src/WiFiSSLClient.cpp +++ b/libraries/WiFiS3/src/WiFiSSLClient.cpp @@ -29,13 +29,7 @@ void WiFiSSLClient::getSocket() { /* -------------------------------------------------------------------------- */ int WiFiSSLClient::connect(IPAddress ip, uint16_t port) { /* -------------------------------------------------------------------------- */ - getSocket(); - - string res = ""; - if(modem.write(string(PROMPT(_SSLCLIENTCONNECTIP)),res, "%s%d,%s,%d\r\n" , CMD_WRITE(_SSLCLIENTCONNECTIP), _sock, ip.toString(), port)) { - return 1; - } - return 0; + return connect(ip.toString().c_str(), port); } /* -------------------------------------------------------------------------- */ @@ -46,9 +40,15 @@ int WiFiSSLClient::connect(const char* host, uint16_t port) { setCACert(); } string res = ""; + if (_connectionTimeout) { + if(modem.write(string(PROMPT(_SSLCLIENTCONNECT)),res, "%s%d,%s,%d,%d\r\n" , CMD_WRITE(_SSLCLIENTCONNECT), _sock, host,port, _connectionTimeout)) { + return 1; + } + } else { if(modem.write(string(PROMPT(_SSLCLIENTCONNECTNAME)),res, "%s%d,%s,%d\r\n" , CMD_WRITE(_SSLCLIENTCONNECTNAME), _sock, host, port)) { return 1; } + } return 0; }