@@ -192,12 +192,7 @@ int DuckNet::setupWebServer(bool createCaptivePortal, std::string html) {
192192 // Use shared_ptr for safe cleanup
193193 std::shared_ptr<uint8_t > atakData (atakBytes, [](uint8_t * p) { delete[] p; });
194194
195- AsyncWebServerResponse* response = request->beginResponse (" application/octet-stream" , atakSize,
196- [atakData, atakSize](uint8_t * buffer, size_t maxLen, size_t alreadySent) -> size_t {
197- size_t remaining = atakSize - alreadySent;
198- size_t toSend = remaining < maxLen ? remaining : maxLen;
199- memcpy (buffer, atakData.get () + alreadySent, toSend);
200- return toSend;
195+ AsyncWebServerResponse* response = request->beginResponse (" application/octet-stream" , atakSize,???
201196 });
202197
203198 response->addHeader (" Content-Disposition" , " attachment; filename=\" atakHistory.bin\" " );
@@ -397,8 +392,8 @@ std::string DuckNet::serializeAtakHistoryToJSON(CircularBuffer* buffer) {
397392}
398393
399394uint8_t * DuckNet::serializeAtakHistoryToBytes (CircularBuffer* buffer) {
400- int atakBytes = buffer->getCount ();
401- size_t dataSize = atakBytes * sizeof (CdpPacket);
395+ // int atakBytes = buffer->getCount();
396+ // size_t dataSize = atakBytes * sizeof(CdpPacket);
402397 // outSize = dataSize + sizeof(uint32_t);
403398
404399 uint8_t * result = new uint8_t [dataSize];
@@ -411,10 +406,21 @@ uint8_t* DuckNet::serializeAtakHistoryToBytes(CircularBuffer* buffer) {
411406
412407 // Serialize packets
413408 int tail = buffer->getTail ();
414- for (int i = 0 ; i < atakBytes; i++) {
415- CdpPacket packet = buffer->getMessage (tail);
416- memcpy (result + 4 + i * sizeof (CdpPacket), &packet, sizeof (CdpPacket));
417- tail = (tail + 1 ) % buffer->getBufferEnd ();
409+ // for (int i = 0; i < atakBytes; i++) {
410+ // CdpPacket packet = buffer->getMessage(tail);
411+ // memcpy(result + 4 + i * sizeof(CdpPacket), &packet, sizeof(CdpPacket));
412+ // tail = (tail + 1) % buffer->getBufferEnd();
413+ // }
414+
415+ while (tail != buffer->getHead ()){
416+ CdpPacket packet = buffer->getMessage (tail);
417+ // get the size of this specific packet
418+ // copy the bytes into result
419+ memcpy (result + 4 + i * sizeof (CdpPacket), &packet, sizeof (CdpPacket));
420+ tail++;
421+ if (tail == buffer->getBufferEnd ()){
422+ tail = 0 ;
423+ }
418424 }
419425
420426 return result;
0 commit comments