This commit is contained in:
J. Nick Koston 2025-06-29 21:04:45 -05:00
parent 429be0a5ae
commit f5df5f71a3
No known key found for this signature in database

View File

@ -71,24 +71,18 @@ void MultipartReader::process_header_(const char *value, size_t length) {
int MultipartReader::on_header_field(multipart_parser *parser, const char *at, size_t length) { int MultipartReader::on_header_field(multipart_parser *parser, const char *at, size_t length) {
MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser)); MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser));
// Store the header field name
reader->current_header_field_.assign(at, length); reader->current_header_field_.assign(at, length);
return 0; return 0;
} }
int MultipartReader::on_header_value(multipart_parser *parser, const char *at, size_t length) { int MultipartReader::on_header_value(multipart_parser *parser, const char *at, size_t length) {
MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser)); MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser));
// Process the header immediately with the value
reader->process_header_(at, length); reader->process_header_(at, length);
return 0; return 0;
} }
int MultipartReader::on_part_data(multipart_parser *parser, const char *at, size_t length) { int MultipartReader::on_part_data(multipart_parser *parser, const char *at, size_t length) {
MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser)); MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser));
// Only process file uploads // Only process file uploads
if (reader->has_file() && reader->data_callback_) { if (reader->has_file() && reader->data_callback_) {
// IMPORTANT: The 'at' pointer points to data within the parser's input buffer. // IMPORTANT: The 'at' pointer points to data within the parser's input buffer.
@ -97,22 +91,17 @@ int MultipartReader::on_part_data(multipart_parser *parser, const char *at, size
// later use as the buffer will be overwritten. // later use as the buffer will be overwritten.
reader->data_callback_(reinterpret_cast<const uint8_t *>(at), length); reader->data_callback_(reinterpret_cast<const uint8_t *>(at), length);
} }
return 0; return 0;
} }
int MultipartReader::on_part_data_end(multipart_parser *parser) { int MultipartReader::on_part_data_end(multipart_parser *parser) {
MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser)); MultipartReader *reader = static_cast<MultipartReader *>(multipart_parser_get_data(parser));
ESP_LOGV(TAG, "Part data end"); ESP_LOGV(TAG, "Part data end");
if (reader->part_complete_callback_) { if (reader->part_complete_callback_) {
reader->part_complete_callback_(); reader->part_complete_callback_();
} }
// Clear part info for next part // Clear part info for next part
reader->current_part_ = Part{}; reader->current_part_ = Part{};
return 0; return 0;
} }
@ -282,4 +271,4 @@ std::string str_trim(const std::string &str) {
} // namespace web_server_idf } // namespace web_server_idf
} // namespace esphome } // namespace esphome
#endif // defined(USE_ESP_IDF) && defined(USE_WEBSERVER_OTA) #endif // defined(USE_ESP_IDF) && defined(USE_WEBSERVER_OTA)