Skip to content

Commit 96cb173

Browse files
committed
Merge branch 'ota-provider/reset-http-downloader' into 'main'
ota_provider: Release http client when BDX sender resets See merge request app-frameworks/esp-matter!986
2 parents 2e0eaf6 + 8edd0a6 commit 96cb173

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

components/esp_matter_ota_provider/include/esp_matter_ota_bdx_sender.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class OtaBdxSender : public chip::bdx::Responder {
6969

7070
char mOtaImageUrl[OTA_URL_MAX_LEN];
7171
uint64_t mOtaImageSize;
72-
esp_http_client_handle_t mHttpDownloader;
72+
esp_http_client_handle_t mHttpDownloader = nullptr;
7373
};
7474

7575
} // namespace ota_provider

components/esp_matter_ota_provider/src/esp_matter_ota_bdx_sender.cpp

+10-5
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ void OtaBdxSender::HandleTransferSessionOutput(TransferSession::OutputEvent &eve
125125
.crt_bundle_attach = esp_crt_bundle_attach,
126126
.keep_alive_enable = true,
127127
};
128+
if (mHttpDownloader) {
129+
http_downloader_abort(mHttpDownloader);
130+
}
128131
if (http_downloader_start(&config, &mHttpDownloader) != ESP_OK) {
129132
mTransfer.AbortTransfer(StatusCode::kUnknown);
130133
}
@@ -140,7 +143,8 @@ void OtaBdxSender::HandleTransferSessionOutput(TransferSession::OutputEvent &eve
140143
return;
141144
}
142145
// Read http response
143-
int bytes_read = http_downloader_read(mHttpDownloader, reinterpret_cast<char *>(blockBuf->Start()), bytesToRead);
146+
int bytes_read =
147+
http_downloader_read(mHttpDownloader, reinterpret_cast<char *>(blockBuf->Start()), bytesToRead);
144148
if (bytes_read < 0) {
145149
ESP_LOGE(TAG, "http_downloader_read failed");
146150
mTransfer.AbortTransfer(StatusCode::kUnknown);
@@ -169,25 +173,22 @@ void OtaBdxSender::HandleTransferSessionOutput(TransferSession::OutputEvent &eve
169173
case TransferSession::OutputEventType::kAckReceived:
170174
break;
171175
case TransferSession::OutputEventType::kAckEOFReceived: {
172-
ESP_LOGD(TAG, "Transfer completed, got AckEOF");
176+
ESP_LOGI(TAG, "Transfer completed, got AckEOF");
173177
Reset();
174178
break;
175179
}
176180
case TransferSession::OutputEventType::kStatusReceived: {
177181
ESP_LOGE(TAG, "Got StatusReport %x", static_cast<uint16_t>(event.statusData.statusCode));
178-
http_downloader_abort(mHttpDownloader);
179182
Reset();
180183
break;
181184
}
182185
case TransferSession::OutputEventType::kInternalError: {
183186
ESP_LOGE(TAG, "InternalError");
184-
http_downloader_abort(mHttpDownloader);
185187
Reset();
186188
break;
187189
}
188190
case TransferSession::OutputEventType::kTransferTimeout: {
189191
ESP_LOGE(TAG, "TransferTimeout");
190-
http_downloader_abort(mHttpDownloader);
191192
Reset();
192193
break;
193194
}
@@ -213,6 +214,10 @@ void OtaBdxSender::Reset()
213214
mInitialized = false;
214215
mNumBytesSent = 0;
215216
mOtaImageSize = 0;
217+
if (mHttpDownloader) {
218+
// Release current http client
219+
http_downloader_abort(mHttpDownloader);
220+
}
216221
mHttpDownloader = nullptr;
217222
memset(mOtaImageUrl, 0, sizeof(mOtaImageUrl));
218223
}

0 commit comments

Comments
 (0)