diff --git a/app/packet.cpp b/app/packet.cpp index eb8dff4..91de094 100644 --- a/app/packet.cpp +++ b/app/packet.cpp @@ -72,8 +72,13 @@ void from_buffer (Img& i, Buffer& b) { i.image_id = static_cast(b.get(8)); i.fragment_id = static_cast(b.get(16)); i.num_fragments = static_cast(b.get(16)); - char image_data[6] = { 'i', 'm', 'a', 'g', 'e', '\0' }; - std::copy(image_data, image_data+6, i.image_data); + char image_data[76]; + uint64_t fragment_len = b.len()-(b.pos()+144); + uint32_t num_bytes = fragment_len/8; + uint8_t num_bits = fragment_len%8; + for(int i=0; ib.get(8); } + image_data[num_bytes] = static_castb.get(num_bits); + std::copy(image_data, image_data+num_bytes, i.image_data); } void from_buffer (Health& h, Buffer& b) { diff --git a/app/packet.h b/app/packet.h index ddc15c2..43da169 100644 --- a/app/packet.h +++ b/app/packet.h @@ -197,7 +197,7 @@ struct Img { uint8_t image_id; uint16_t fragment_id; uint16_t num_fragments; - char image_data[6]; // TODO: replace once size is finalized + char image_data[76]; template void serialize (Archive& ar) {