From 9b3729d4223b996a222dcd93d6574834200d5add Mon Sep 17 00:00:00 2001 From: Slavey Karadzhov Date: Wed, 2 Dec 2020 17:39:49 +0100 Subject: [PATCH] PR #2123 broke the multipart file and post sending resulting in wrong multipart boudary headers and endless loop. This commit removes the introduced problems. --- Sming/Core/Data/Stream/MultipartStream.cpp | 11 +++++++++-- Sming/Core/Data/Stream/MultipartStream.h | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Sming/Core/Data/Stream/MultipartStream.cpp b/Sming/Core/Data/Stream/MultipartStream.cpp index 8174455130..e7506b9c3e 100644 --- a/Sming/Core/Data/Stream/MultipartStream.cpp +++ b/Sming/Core/Data/Stream/MultipartStream.cpp @@ -15,6 +15,10 @@ IDataSourceStream* MultipartStream::getNextStream() { + if(finished) { + return nullptr; + } + // Return content, if available if(bodyPart.stream != nullptr) { auto stream = bodyPart.stream; @@ -24,6 +28,10 @@ IDataSourceStream* MultipartStream::getNextStream() // Fetch next part to send bodyPart = producer(); + if(bodyPart.headers == nullptr && bodyPart.stream == nullptr) { + // Nothing else to send... + finished = true; + } // Generate header fragment auto stream = new MemoryDataStream(); @@ -31,8 +39,7 @@ IDataSourceStream* MultipartStream::getNextStream() stream->print("\r\n"); stream->print("--"); stream->print(getBoundary()); - if(bodyPart.headers == nullptr) { - // No more parts + if(finished) { stream->print("--"); } stream->print("\r\n"); diff --git a/Sming/Core/Data/Stream/MultipartStream.h b/Sming/Core/Data/Stream/MultipartStream.h index 32c0ca6c7e..1981d152ab 100644 --- a/Sming/Core/Data/Stream/MultipartStream.h +++ b/Sming/Core/Data/Stream/MultipartStream.h @@ -60,6 +60,7 @@ class MultipartStream : public MultiStream Producer producer; BodyPart bodyPart; char boundary[16] = {0}; + bool finished = false; }; /**