Go to file
Krzysiek S be84c8219c
[WiFiClient] Default connection timeout, when no timeout provided (#5487)
## The problem
WiFiClient's connect method variant where no timeout is passed can block esp32 MCU and may then cause watchdog to kick in and reset the device. This behavior is different from that, what is in arduino-esp8266 core.

## Summary
Some cross-esp libraries (working both on esp32 and 8266), like PubSubClient simply call connect method on WiFiClient, to get connected to remote server. However, connect behavior varies betwen esp arduino 8266 and esp arduino 32 cores. This pull request tries introduce same behavior - to make connect method non-blocking on esp32, like it is with 8266 arduino core.

## Proposed solution
Introduce default fixed timeout that can be changed by #define - by default set to 3 seconds.

### Affected components: 
WiFiClient

### Affected methods:
```c++ 
int connect(IPAddress ip, uint16_t port);
int connect(const char *host, uint16_t port);
```

### Impact
May impact projects or libraries using connect method variant without specified timeout, where:
- remote is located far away or
- connection is heavily limited, or
- remote is slow, when it comes to accept the connection
2021-08-02 15:05:44 +03:00
.github Add ReadTheDocs CI (#5456) 2021-07-26 16:04:20 +03:00
cores/esp32 Rework pulseIn to work on ESP32-C3 2021-08-02 14:53:11 +03:00
docs Doc: Updated Troubleshooting file (#5430) 2021-07-26 20:37:12 +03:00
libraries [WiFiClient] Default connection timeout, when no timeout provided (#5487) 2021-08-02 15:05:44 +03:00
package Remove mkfatfs tool from package json 2021-07-18 22:48:03 +03:00
tools IDF master c69f0ec32 (#5449) 2021-07-26 15:56:05 +03:00
variants Added support for Trueverit ESP32 Universal IoT Driver MK II (#5269) 2021-06-10 11:57:10 +03:00
.gitignore Docs: Initial documentation structure using Sphinx (#5355) 2021-07-19 13:37:26 +03:00
.gitmodules v2.0.0 Add support for ESP32S2 and update ESP-IDF to 4.4 (#4996) 2021-04-05 14:23:58 +03:00
.travis.yml Use Github Actions for release (#3309) 2019-10-01 10:44:04 +03:00
boards.txt Various USB fixes (#5422) 2021-07-20 11:59:13 +03:00
CMakeLists.txt IDF master d93887f9f (#5336) 2021-07-17 01:57:49 +03:00
component.mk Fix compilation errors when used as IDF component 2019-01-26 21:37:03 +01:00
CONTRIBUTING.rst Add files via upload - CONTRIBUTING.rst (#5138) 2021-05-18 13:54:25 +03:00
Kconfig.projbuild v2.0.0 Add support for ESP32S2 and update ESP-IDF to 4.4 (#4996) 2021-04-05 14:23:58 +03:00
LICENSE.md Add LGPL 2.1 License 2019-04-16 03:08:50 +02:00
Makefile.projbuild Remove duplicate ota_data flashing under IDF 2018-08-16 13:34:47 +02:00
package.json IDF master d93887f9f (#5336) 2021-07-17 01:57:49 +03:00
platform.txt IDF master c69f0ec32 (#5449) 2021-07-26 15:56:05 +03:00
programmers.txt initial import 2016-10-06 07:09:44 -06:00
README.md Update README.md 2021-07-22 17:05:54 +03:00

Arduino core for the ESP32

Build Status Documentation Status

Need help or have a question? Join the chat at https://gitter.im/espressif/arduino-esp32

Contents

ESP32-S2 and ESP32-C3 Support

If you want to test ESP32-S2 and/or ESP32-C3 through the board manager, please use the development release link:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

Now you can install the latest 2.0.0 version from the boards manager.

Development Status

Latest Stable Release Release Version Release Date Downloads

Latest Development Release Release Version Release Date Downloads

Documentation

You can use Arduino-ESP32 Online Documentation to get all information about this project.

Decoding exceptions

You can use EspExceptionDecoder to get meaningful call trace.

Issue/Bug report template

Before reporting an issue, make sure you've searched for similar one that was already created. Also make sure to go through all the issues labelled as for reference.

Finally, if you are sure no one else had the issue, follow the issue template while reporting any issue.

Contributing

We welcome contributions to the Arduino ESP32 project!

See contributing in the documentation for more information on how to contribute to the project.