Fit file chunks within the signed router packet limit
This commit is contained in:
1 parent
3d6f9c1be4
commit
4cabbc32f5
1 file changed
+4
-3
@@ -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();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user