diff --git a/src/routing_layer/etcp_router.c b/src/routing_layer/etcp_router.c index ebac575f..17a6ad09 100644 --- a/src/routing_layer/etcp_router.c +++ b/src/routing_layer/etcp_router.c @@ -966,10 +966,13 @@ static void router_handle_ack(struct UTUN_INSTANCE* inst, struct ETCP_ROUTER_CON static void router_forward_transit(struct UTUN_INSTANCE* inst, struct ll_entry* entry, struct SVC_ROUTE_HDR* hdr) { - struct ETCP_CONN* next = topo_group_find_conn_for_node(topo_groups_find(inst->topo_groups, hdr->group_id), hdr->dst_node_id); + struct TOPO_GROUP* group = topo_groups_find(inst->topo_groups, hdr->group_id); + struct ETCP_CONN* next = topo_group_find_conn_for_node(group, hdr->dst_node_id); if (!next) { - DEBUG_WARN(DEBUG_CATEGORY_ETCPROUTE, "etcp_router: no route to %016llx svc_id=%u, dropping", - (unsigned long long)hdr->dst_node_id, hdr->svc_id); + DEBUG_WARN(DEBUG_CATEGORY_ETCPROUTE, "etcp_router: no route to %016llx svc_id=%u, dropping (group=%016llx nodes=%d)", + (unsigned long long)hdr->dst_node_id, hdr->svc_id, + (unsigned long long)hdr->group_id, + group && group->nodes ? queue_entry_count(group->nodes) : -1); free_entry(entry); return; } struct TRANSIT_QUEUE* tq = transit_queue_find(next, hdr->group_id, hdr->src_node_id, hdr->dst_node_id);