1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-12-12 08:01:46 +03:00
Commit Graph

96 Commits

Author SHA1 Message Date
david gauchard
e3bc3c226b Fixes for IPv6, added in CI (#5557) 2018-12-27 16:13:48 +01:00
david gauchard
92373a9837 Deprecate axTLS, update examples (#5366)
* update examples

* fix serial<->tcp example, use STASSID instead of SSID (name collision)

* fix HTTPSRequest.ino

* update AxTLS HTTPS examples, update AxTLS API to deprecated

* fixes

* fixes + fix astyle (no preproc directives) + restyling script

* fix HTTPClient library

* fixes

* common.sh: do not reload arduino when already present (for locally CI testing)

* common.sh: do not reload ArduinoJson when already present (for locally CI testing)

* fix

* fix

* fix deprecated example

* fix WiFiHTTPSServer.ino

* reduce footprint

* wipfix

* fix led builtin

* fix example

* finished updating APSSID on all examples

* style

* restyle examples

* helper to run CI test locally

* local CI runner more verbose

* +const

* deprecation deprecation

* deprecation

* Update NTPClient.ino

const char[] => const char *

* Update interactive.ino

const char[] => const char *
2018-11-29 20:49:27 -08:00
david gauchard
5c4db3acf4 IPv6 on esp8266-nonos-sdk and arduino (#5136) 2018-11-27 23:07:47 +01:00
david gauchard
74ca42f829 Sketch emulation on host (#5342)
* WIP compile examples on host with 'make examples'

* WIP bufferize tcp input

* WIP Makefile

* WIP network to rework, tcp/udp to factorize, udp addresses broken

* minor changes to the core

* WIP basic udp working

* WIP mdns

* WIP mcast receiving, not sending

* WIP mdns OK

* beta version

* SSL + doc

* update travis host test command

* licenses

* typo

* doc: arduino builder is not around: declare functions before calling them

* fix with latest SSL PR, compile in 32 bits mode

* fix make clean

* make -m32 optional

* 32bits compiler ability tester

* WIP

* WIP (fix 1 vtable error, still another one to hunt with using spiffs)

* example astyle

* fix os_printf_plus

* load / save mock spiffs

* fix style

* fix using spiffs/mock

* don't mess ram

* update doc

* remove leftover

* optimization -Os except for CI, rename ARCH32 to FORCE32

* revert useless cast (not even compiled)

* remove unused function

* use proper type for pointer arithmetics

* makefile: sketch object and cpp file moved to bin/ directories
easier to clean, and IDE don't like them

* changes for review

* make use of %zd

* less verbose makefile by default (option)

* update readme
2018-11-20 18:51:45 -02:00
Adrian Scillato
561426c0c7 Fix webserver unresponsiveness (#5259) 2018-10-18 18:36:47 -03:00
david gauchard
e549355221 Fix: WiFiClient::flush() yields but can be called from events (#5254)
Fix bug introduced by #5167 which replaced delay() by yield().
That should have been esp_yield() which is the one delay()
calls and is safe from either SYS or CONT contexts.

Fixes #5237.
2018-10-17 15:32:54 -07:00
david gauchard
5a5af55d3a ClientContext: restore TCP PuSH flasg when needed (#5176)
fix #5173
2018-09-27 17:22:21 +02:00
david gauchard
775eb9b343 fix: tcp_output() should always be called after tcp_write(), does not break nagle (+ doc) (#5172) 2018-09-26 23:56:01 +02:00
Earle F. Philhower, III
d0171574d8 Fix TCP race condition, remove fixed delay in CC (#5167)
ClientContext::_wait_for_sent() could dereference a TCP's _pcb after
the connection was dropped by the OS, resulting in a crash.

Move the connection dropped check to catch this case, and replace
a fixed millisecond delay() with a yield and timeout value to minimize
wasted time when transmission completes.
2018-09-26 08:47:10 -07:00
david gauchard
83a8076db8 ClientContext (tcp) updates (#5089)
* +sync, get/set default nodelay, sync

* default nodelay=1

* update flush()

* fix return value

* ClientContext: put things together

* ClientContext: fix debugging messages

* WiFiClient: move static members out of the class, add comments

* remove circular dependency

* parameter and return value for Client::flush&stop, flush timeout raised to 300ms

* tcp flush: restart timer on ack receive

* OTA protocol needs setNoDelay(true)

* fix Ethernet with Client changes

* 1 line unredable -> 5 lines readable code

* doc

* Update client-class.rst

* Added details for getters
2018-09-25 10:47:27 -03:00
Earle F. Philhower, III
991d738176 Move SSLContext to its own header (#5121)
Simple refactor to make WiFiClientSecureAxTLS use an external header to
define its SSLContext, just as it does for several other classes.

Fixes #3648
2018-09-16 22:25:39 -03:00
david gauchard
b08d282673 fix connection reset by peer case (#4626)
* fix connection reset by peer case where pcb is set to null in ClientContext::_error but not reported to WiFiClient

* ClientContext: rename functions *_sent to *_acked (:sent to :ack in debug)

* use nullptr instead of 0
2018-04-11 22:25:04 -03:00
Harald
3267443348 Fix random crashing of ClientContext::write(Stream) and write_P(PGM_P buf, size_t size) (#2504) (#4530)
* Fix random crashing of ClientContext::write(Stream) and write_P(PGM_P buf, size_t size) (#2504)

* - Allow partial buffer release

* - Refined comments
2018-03-22 00:01:22 -03:00
Jonatan Olofsson
461c922586 Compressed dns (#3769)
* Add UdpContext seek and tell

* Add support for DNS compressed messages

* mDNS compressed pointer: Validate offset before jumping
2018-03-16 09:46:35 -03:00
Ivan Grokhotkov
ee5a1e2804 WiFiClient: don’t destroy ClientContext on ::stop
Reported in https://github.com/esp8266/Arduino/issues/4078.

WiFiClient::stopAll, called from a WiFi disconnected event handler,
could be called while WiFiClient::connect was in progress. This issue
was initially fixed in #4194, by testing `this` pointer for being
non-null in ClientContext::connect.

This change delegates deletion of ClientContext to WiFiClient
destructor. WiFiClient::stop only calls ClientContext::stop, which
closes/aborts the connection.
2018-02-20 03:33:55 +03:00
Earle F. Philhower, III
e38f19e008 Remove warnings when NDEBUG build option used (#4196)
When building using the new NDEBUG option recently added, the assert()
macro is defined to nothing. This leaves a few variables unused in the
WiFi stack causing compiler warnings. Add in empty casts to remove
these warnings. Does not affect actual assert use when NDEBUG is not
defined.
2018-02-04 20:59:31 -08:00
david gauchard
199fe0f16d ClientContext:_write_some: release buffer once data really accepted for sending (#4265)
may fix #1872
2018-02-01 11:49:04 +01:00
david gauchard
dd00db1b8c check ClientContext's this and _pcb once out of the ::connect() delay (#4194)
fix #4078
2018-01-18 21:20:33 -03:00
david gauchard
9cfbbc7ad3 keepalive api (default 2h,75s,9 not enabled) (#3937) 2018-01-05 00:17:37 -03:00
letsbuildit
b0bb1e144f Fix issue with UdpContext.h comment (#4068) 2018-01-02 10:16:06 -03:00
Ivan Grokhotkov
7fc23c6f7a WiFiUDP: fix crash when calling destinationIP with no packet available (#4036)
Fixes https://github.com/esp8266/Arduino/issues/3989.
2017-12-27 23:15:11 -03:00
david gauchard
022ea5a872 consequence of ::flush() update: fix potential double free (#3990) 2017-12-18 08:56:18 -03:00
david gauchard
26980b39e3 fix #1002 ::Flush() wait for empty send buffer (#3967)
* fix #1002 ::Flush() wait for empty send buffer

* WiFiClient::Flush() guarantees that the data has been delivered
option 1 of https://github.com/esp8266/Arduino/pull/3967#discussion_r156901071
10ms max wait according to loaded tcp echo/reply scheme
2017-12-17 13:16:41 -03:00
Ivan Grokhotkov
c83e17b31e WiFiUpd: fix warning 2017-10-15 14:41:50 +08:00
Ivan Grokhotkov
5116a46f09 WiFiClient,WiFiServer: update to match new err_t definition 2017-10-15 01:40:10 -05:00
Ivan Grokhotkov
526f4fbb6c WiFiClientSecure: add option to allow self-signed certificates
Mainly useful for testing WiFiClientSecure in local environments.

If allowSelfSignedCerts is called before verifyCertChain, then the
certificate chain will be verified, but the final certificate may be
self-signed.
2017-10-08 07:08:51 +08:00
Matthew Blythe
13c1e8b293 UdpContext: check that pbuf_alloc doesn't return nullptr (#3354) 2017-09-22 03:56:27 -05:00
Ivan Grokhotkov
d6f1f0d5d7 WiFiClient: apply write timeout to single chunk (#3273)
WiFiClient write timeouts introduced in #3257 applied to the whole write
operation, which could take long time if data size was large. This
change makes the timeout happen per chunk. Timeout now happens if no
data has been delivered within a given interval.
2017-05-22 20:08:16 +08:00
Ivan Grokhotkov
eebcc656ed WiFiClient: add support for connect timeout 2017-05-19 09:35:01 -05:00
Ivan Grokhotkov
7de81270a3 ClientContext: don’t read DataSource in TCP callback
Previously, _write_some function would be called each time TCP stack
notifies the application that some data was delivered (via the `sent`
callback). In turn, _write_some would obtain more data to be sent from
the DataSource. In case of a DataSource backed by a Stream, this would
read from a stream. Some libraries (such as SD) may call `yield` and
other blocking operations from Stream read function, which can not be
used in TCP stack callbacks.

This change moves the data sending loop back into the Arduino task, with
a negligible loss of performance. TCP callback now wakes the main task
via `esp_schedule`, which performs stream read and provides more data
to the TCP stack.

Possible future optimization would be to buffer Stream data ahead of
time. That way, buffered data could be sent immediately from the TCP
callback. On the other hand, this optimization would need extra TCP_MSS
of temporary storage, per connection.

Fixes #2399.
2017-05-09 06:17:32 -05:00
Ivan Grokhotkov
c5c138ec5a axtls: update to bddda2a0
- update ssl_client_new signature
- add max fragment length negotiation support (hardcoded to 4096 bytes)
- build axtls with -f{function,data}-sections, ~1k less DRAM usage,
  ~3k less flash
- strip prefix from build paths in debug symbols
2017-04-29 22:58:19 +08:00
david gauchard
a41f55c469 prepare lwip2 (#3129)
* minimum changes for libraries to compile with lwip2

* add WiFiClient::availableForWrite() (similar to Serial::) which indicates how much data can be sent without buffering
2017-04-25 08:55:01 -05:00
joelucid
61787b23af ClientConnection uses too much heap when streaming files #2871 (#2874)
* ClientConnection uses too much heap when streaming files #2871

* make write_chunk_size a member variable

* untabify
2017-01-31 11:04:45 +03:00
Rodion Kvashnin
2126146e20 Fix warnings (#2881)
* Suppressed -Wunused-parameter and -Wunused-function by casting to void unused identifiers.

* Explicit initialization of all fields to suppress -Wmissing-field-initializers.

* Fixed signed/unsigned integer comparison.

* memset initialization of structs.

* More -Wunused-parameter fixes.
2017-01-31 10:07:59 +03:00
Me No Dev
07f4d4c241 Lwip addons (#2260)
* Add multicast TTL to UDP and rework UdpContext

* Add limit for TCP TIME_WAIT pcbs

* Add liblwip_gcc.a

* Make the changes be backward compatible with the current xcc version
2016-07-11 21:07:45 +08:00
Ivan Grokhotkov
8db4dcea42 WifiClient::write refactoring (second attempt) (#2177)
* WiFiClient: use DataSource for writes

* ESP8266WebServer: delegate writing to WiFiClient

* ESP8266WebServer: set write timeout before sending content
2016-06-23 17:47:18 +08:00
Ivan Grokhotkov
e8b8a606e4 Update axTLS to 139914f
- Fix occasional software WDT due to lengthy bigint operations
- Implement truly blocking reads as a workaround for half-duplex nature of axTLS
2016-05-10 23:34:33 +08:00
Ivan Grokhotkov
a2b82ed6b6 Use gcc-built LwIP by default (#1926)
It is still possible to use xcc-built LwIP by selecting "Core Development" board from tools menu.
2016-05-06 20:09:15 +08:00
Ivan Grokhotkov
33723a9b52 Fix UdpContext::peek to return int (#1946) 2016-04-26 16:02:07 +08:00
Ivan Grokhotkov
8c65f2fcd0 Update axTLS to fe4518d, SNI support in WiFiClientSecure (#1285)
Fixes #1933
2016-04-19 08:29:13 +03:00
Me No Dev
bfe9f7be69 Update and move lwIP headers, add options to use different lwIP build for generic device
Makefile added to lwip source folder to build and install liblwip_gcc.a
2016-04-10 21:55:22 +03:00
Ivan Grokhotkov
19e97bfe15 Fix WiFiUDP::peek return value when buffer is empty (#1796) 2016-03-24 01:21:29 +03:00
Ivan Grokhotkov
aa67d1c492 Pass errors from udp_sendto to WiFiUDP::endPacket (#1696) 2016-03-02 19:58:35 +03:00
Ivan Grokhotkov
33e5ca44df WiFiClient: fix write behaviour when connection is closed by remote side
Don't wait for data to be ACKed if we have just called abort().
2016-03-02 17:53:42 +03:00
Ivan Grokhotkov
efc8dda160 Workaround for LwIP not handling ERR_ABRT
Described in detail here: https://github.com/esp8266/Arduino/wiki/LwIP-issue,-or-how-a-simple-%22if%22-can-go-wrong
2016-01-26 15:57:37 +03:00
Ivan Grokhotkov
ee2d4495fd Additional check in wl_definitions.h to guard against duplicate definitions 2015-12-22 14:08:17 +03:00
Markus Sattler
5333ebfed7 add function peekBytes to WiFiClient/WiFiClientSecure to allow to peek multiple bytes if possible 2015-12-19 14:37:36 +01:00
Ivan Grokhotkov
3d1fbc60ab Replace chain of UDP pbufs with a single pbuf before sending (#1009)
Packets up to 1492 bytes may be sent this way.
Also reduced pbuf_unit_size to 128 bytes.
2015-12-06 20:22:54 +03:00
Me No Dev
a44632b8cf make compiler happier 2015-11-25 18:11:16 +02:00
Markus Sattler
c8aac83c47 add :del message to unref 2015-11-22 22:39:58 +01:00