Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a non-breaking extension to the OTA protocol for getting rid of UDP #6369

Open
d-a-v opened this issue Aug 1, 2019 · 3 comments
Open
Assignees
Labels
Milestone

Comments

@d-a-v
Copy link
Collaborator

d-a-v commented Aug 1, 2019

Per #6348 and #6351,

edit 21-02-27:
Title was: "Feature request: implement ClientContext::wait_until_acked()"
Per #7896, renaming to "OTA: Investigate workaround delay when receiving 'OK'" implemented by #6351.

edit 21-04-01:
It seems ClientContext::wait_until_sent() is not sufficient for a fully terminated transmission.

Per #7955

There are two OK in the ArduinoOTA protocol w/espota.py tool, one of them is UDP.
Changed title to: Add a non-breaking extension to the OTA protocol for getting rid of UDP.

@d-a-v d-a-v added this to the 3.0.0 milestone Aug 1, 2019
@d-a-v d-a-v self-assigned this Aug 1, 2019
d-a-v added a commit to d-a-v/Arduino that referenced this issue Feb 27, 2021
While looking at esp8266#6348 and esp8266#6369, and after checking into lwIP sources, it
appears that the tests in ClientContext::wait_until_sent() effectively wait
for all acks on current output buffer. Comments are added.
@d-a-v d-a-v changed the title Feature request: implement ClientContext::wait_until_acked() OTA: Investigate workaround delay when receiving 'OK' Feb 27, 2021
@d-a-v
Copy link
Collaborator Author

d-a-v commented Feb 27, 2021

(moved to OP)

@d-a-v d-a-v removed this from the 3.0.0 milestone Feb 27, 2021
d-a-v added a commit that referenced this issue Mar 21, 2021
* rename ClientContext::wait_until_sent() to wait_until_acked()

While looking at #6348 and #6369, and after checking into lwIP sources, it
appears that the tests in ClientContext::wait_until_sent() effectively wait
for all acks on current output buffer. Comments are added.

* host tests counterpart
@d-a-v d-a-v changed the title OTA: Investigate workaround delay when receiving 'OK' Add a non-breaking extension to the OTA protocol for getting rid of UDP Apr 1, 2021
@d-a-v d-a-v added this to the 3.0.1 milestone Apr 1, 2021
@d-a-v d-a-v added component: OTA help wanted Help needed from the community type: enhancement labels Apr 1, 2021
@Miq1
Copy link

Miq1 commented Apr 2, 2021

I would like to add my observations when chasing a missing "OK" response upon a successful authorization. It turned out that basically a router bug was responsible for the packet loss, but it seems to me slightly naive in the ArduinoOTA code to rely on the successful transmission of a single UDP packet. UDP is per se subject to packet losses, so at least the packets should be sent twice or thrice to increase the reliability. This was in the end what saved me from the bug, as the router (an AVM Fritzbox with OS 7.21) would only drop the very first packet.

@d-a-v
Copy link
Collaborator Author

d-a-v commented Jun 11, 2022

#7693 would have to be taken into consideration in this issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants