Allocate content buffer dynamically.

This commit is contained in:
Martin Brodbeck 2023-01-05 10:05:47 +01:00
parent 874ceb93b6
commit c4b83f1bff
2 changed files with 9 additions and 9 deletions

View file

@ -1,13 +1,16 @@
#include "http_client.h" #include "http_client.h"
#include <iostream> #include <iostream>
#include <memory>
std::unique_ptr<char[]> myBodyBuffer = nullptr;
uint16_t offset{0};
bool received{false};
void result_callback(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, void result_callback(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res,
err_t err) { err_t err) {
#ifdef DEBUG #ifdef DEBUG
printf("Transfer complete\n"); printf("Transfer complete\n");
// printf("Local result=%d\n", httpc_result);
// printf("Http result=%d\n", srv_res);
#endif #endif
received = true; received = true;
offset = 0; offset = 0;
@ -17,9 +20,10 @@ err_t headers_callback(httpc_state_t *connection, void *arg, struct pbuf *hdr, u
u32_t content_len) { u32_t content_len) {
#ifdef DEBUG #ifdef DEBUG
printf("Headers received\n"); printf("Headers received\n");
printf("Content length=%d\n", content_len); printf("Content length=%lu\n", content_len);
printf("Header length=%d\n", hdr_len); printf("Header length=%u\n", hdr_len);
#endif #endif
myBodyBuffer = std::make_unique<char[]>(content_len + 1);
return ERR_OK; return ERR_OK;
} }
@ -64,7 +68,7 @@ std::string HttpClient::retrieveWasteDatesAsCsv() {
sleep_ms(1000); sleep_ms(1000);
} }
result.append(myBodyBuffer); result.append(myBodyBuffer.get());
received = false; received = false;
#ifdef DEBUG #ifdef DEBUG

View file

@ -6,10 +6,6 @@
#include "pico/cyw43_arch.h" #include "pico/cyw43_arch.h"
#include "pico/stdlib.h" #include "pico/stdlib.h"
static char myBodyBuffer[2048];
static uint16_t offset{0};
static bool received{false};
void result_callback(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, void result_callback(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res,
err_t err); err_t err);