From 905fde5a2757ad41232fa82f457e6b693b36d580 Mon Sep 17 00:00:00 2001 From: evgeny Date: Sat, 12 Sep 2026 18:27:23 +0300 Subject: [PATCH] =?UTF-8?q?media:=20BLOCK=5FREQ=20=D1=82=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B7=D0=B8=D1=82=D0=BE=D0=BC=20=E2=80=94=20=D1=83=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D1=82=D1=80=D0=B5=D0=B1=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D1=8F=D0=BC=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D1=81=D0=BE=D0=B5=D0=B4=D0=B8=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20(NAT-=D1=83=D0=B7=D0=BB=D1=8B=20=D0=BA=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D1=8E=D1=82=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D1=80=D0=BE?= =?UTF-8?q?=D1=83=D1=82=D0=B5=D1=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/media_delivery/media_download.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/media_delivery/media_download.c b/src/media_delivery/media_download.c index 8149765c..52614423 100644 --- a/src/media_delivery/media_download.c +++ b/src/media_delivery/media_download.c @@ -204,27 +204,12 @@ static int md_dl_request_block(struct media_download* dl, int bi) { dl->inflight++; struct UTUN_INSTANCE* inst = dl->inst; - if (instance_find_conn(inst, holder)) { - p->connected = 1; - b->state = MD_BLK_REQ; - md_dl_send_block_req(inst, holder, dl, bi); - } else { - struct TOPO_GROUP* grp = inst->topo_groups ? topo_groups_find(inst->topo_groups, dl->group_id) : NULL; - if (grp && grp->conn_mgr) { - int rc = conn_mgr_open(inst, grp->group_id, holder, md_dl_conn_cb, dl, &p->cm_handle); - if (rc != 0) { - DEBUG_WARN(DEBUG_CATEGORY_GENERAL, "%s: conn_mgr_open failed rc=%d for 0x%016llx", MDL_ID, rc, (unsigned long long)holder); - dl->inflight--; - return -1; - } - /* CONN — BLOCK_REQ отправится в md_dl_conn_cb по CONN_EVENT_UP */ - } else { - /* нет conn_mgr — шлём напрямую best-effort */ - p->connected = 1; - b->state = MD_BLK_REQ; - md_dl_send_block_req(inst, holder, dl, bi); - } - } + /* BLOCK_REQ шлём через роутер (etcp_route_send): при наличии прямого соединения + * пойдёт напрямую, иначе — транзитом. Держатель ответит чанками по лучшему пути, + * поэтому прямое соединение не требуется (NAT-узлы качают транзитом). */ + p->connected = 1; + b->state = MD_BLK_REQ; + md_dl_send_block_req(inst, holder, dl, bi); return 0; }