Public Access
OTA: answer once the announced image size has arrived
The Arduino network client treats a half-closed connection as closed, so the device's reply after the sender's EOF was lost. The header already carries the image size: UpdateParser::complete() lets the device finish and answer while the connection is open. ota_push.py half-closes only if no answer comes within 3 s, for older firmware. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
@@ -138,6 +138,18 @@ void test_progress_counts_image_bytes() {
|
||||
TEST_ASSERT_EQUAL(25, p.percent());
|
||||
}
|
||||
|
||||
void test_complete_once_the_declared_image_size_has_arrived() {
|
||||
FakeVerifier v;
|
||||
MemorySink sink;
|
||||
auto file = makeFile("v0.3.0", image(300));
|
||||
UpdateParser p(v, sink, 100000, "v0.2.1");
|
||||
p.feed(file.data(), file.size() - 1);
|
||||
TEST_ASSERT_FALSE(p.complete());
|
||||
p.feed(file.data() + file.size() - 1, 1);
|
||||
TEST_ASSERT_TRUE(p.complete());
|
||||
TEST_ASSERT_TRUE(p.end());
|
||||
}
|
||||
|
||||
void test_not_an_update_file_is_refused_before_writing() {
|
||||
FakeVerifier v;
|
||||
MemorySink sink;
|
||||
@@ -273,6 +285,7 @@ int main() {
|
||||
RUN_TEST(test_valid_file_in_one_chunk_is_installed);
|
||||
RUN_TEST(test_valid_file_byte_by_byte);
|
||||
RUN_TEST(test_progress_counts_image_bytes);
|
||||
RUN_TEST(test_complete_once_the_declared_image_size_has_arrived);
|
||||
RUN_TEST(test_not_an_update_file_is_refused_before_writing);
|
||||
RUN_TEST(test_bad_signature_is_refused_before_writing);
|
||||
RUN_TEST(test_tampered_version_breaks_the_signature);
|
||||
|
||||
Reference in New Issue
Block a user