diff --git a/eblapp-server/src/main.c b/eblapp-server/src/main.c index 655d13b..24bfd6d 100644 --- a/eblapp-server/src/main.c +++ b/eblapp-server/src/main.c @@ -11,9 +11,9 @@ #include "eblapp.h" #include "ring_buffer.h" -#define BUFFER_SIZE 65536 +#define BUFFER_SIZE 20000 #define PORT 1069 -#define MAX_PACKET_SIZE 1024 +#define MAX_PACKET_SIZE 1400 #define TIMEOUT 5 void error(const char* msg) @@ -90,12 +90,10 @@ int main() size_t space_left = 0; size_t bytes_left = 0; ring_buffer__get_free_bytes(ring_buffer, &space_left); - printf("space_left: %zu\n", space_left); while(space_left) { size_t toread = space_left > MAX_PACKET_SIZE ? MAX_PACKET_SIZE : space_left; int bytes_read = read(fd, buffer, toread); - printf("bytes_read: %d\n", bytes_read); if(bytes_read <= 0) { break; @@ -107,11 +105,9 @@ int main() } ring_buffer__get_free_bytes(ring_buffer, &space_left); - printf("space_left: %zu\n", space_left); } ring_buffer__get_unread_bytes(ring_buffer, &bytes_left); - printf("bytes_left: %zu\n", bytes_left); while(bytes_left) { struct Eblapp_transfer_data* data = (struct Eblapp_transfer_data*)buffer; @@ -120,6 +116,13 @@ int main() { toread = MAX_PACKET_SIZE - 8; } + if (st.st_size - current_offset > 256) + { + // Keep destination nice and aligned + toread &= ~(0x0f); + if (toread == 0) + break; + } if(ring_buffer__read(ring_buffer, buffer + 8, &toread) < 0) { perror("ring_buffer__read() failed"); @@ -135,7 +138,6 @@ int main() current_offset += (n - 8); ring_buffer__get_unread_bytes(ring_buffer, &bytes_left); - printf("bytes_left: %zu (sent: %d)\n", bytes_left, current_offset); } // Wait for ACKs @@ -158,7 +160,6 @@ int main() if(ack_packet->opcode == EBLAPP_ACK) { uint32_t acked_byte = ack_packet->ack_byte; - printf("ack %d/%zu\n", acked_byte, st.st_size); if(acked_byte >= st.st_size) { printf("Transfer done\n");