Browse Source

Fit file chunks within the signed router packet limit

master
evgeny 2 days ago
parent
commit
4cabbc32f5
  1. 7
      src/media_delivery/file_transfer.c

7
src/media_delivery/file_transfer.c

@ -17,7 +17,7 @@
#define FT_DATA 2 /* tid:16, offset:8, bytes */
#define FT_DONE 3 /* tid:16 */
#define FT_REFUSE 4 /* tid:16 */
#define FT_CHUNK 32768u
#define FT_CHUNK 8192u /* Вместе с подписью и полным путём помещается в кодограмму router (16 КиБ). */
#define FT_MAX_OPS 16
struct file_transfer {
@ -114,7 +114,7 @@ static void ft_pump(void* arg) {
op->pump = NULL;
if (!op->up || op->receiving) return;
struct file_transfer* ft = op->ft;
for (unsigned i = 0; i < 1 && op->offset < op->size; i++) {
if (op->offset < op->size) {
if (!etcp_router_send_q_has_room(ft->inst, op->group, op->peer, ETCP_RT_ID_FILE_TRANSFER)) {
etcp_router_on_send_ready(ft->inst, op->group, op->peer, ETCP_RT_ID_FILE_TRANSFER, &op->waiter, ft_ready, op);
return;
@ -130,7 +130,8 @@ static void ft_pump(void* arg) {
return;
}
int error = ft_send(ft, op->group, op->peer, FT_DATA, body, 24 + n);
if (error) return;
if (error < 0) { ft_finish(op, -1); return; }
if (error > 0) return;
op->offset += n;
op->progress_tb = get_time_tb();
}

Loading…
Cancel
Save