diff --git a/src/mesh/MeshService.cpp b/src/mesh/MeshService.cpp index 919bd6fdf..9b49bd5e2 100644 --- a/src/mesh/MeshService.cpp +++ b/src/mesh/MeshService.cpp @@ -234,12 +234,12 @@ ErrorCode MeshService::sendQueueStatusToPhone(const meshtastic_QueueStatus &qs, void MeshService::sendToMesh(meshtastic_MeshPacket *p, RxSource src, bool ccToPhone) { if(config.network.routingAlgorithm == meshtastic_Config_RoutingConfig_FishEyeState && moduleConfig.fish_eye_state_routing.enabled){ - if(p->decoded.dest != 0 && p->decoded.dest != NODENUM_BROADCAST){ - p->to = fishEyeStateRoutingModule->getNextHopForID(p->decoded.dest); - }else if ((p->decoded.dest == 0) && (p->to != 0) && (p->to != NODENUM_BROADCAST )) + if(p->to != 0 && p->to != NODENUM_BROADCAST && !isToUs(p)){ + p->decoded.dest = fishEyeStateRoutingModule->getNextHopForID(p->to); + }else if ((p->to == 0) && (p->decoded.dest != 0) && (p->decoded.dest != NODENUM_BROADCAST ) && (p->decoded.dest != nodeDB->getNodeNum())) { - p->decoded.dest = p->to; - p->to = fishEyeStateRoutingModule->getNextHopForID(p->decoded.dest); + p->to = p->decoded.dest; + p->decoded.dest = fishEyeStateRoutingModule->getNextHopForID(p->to); } } diff --git a/src/mesh/Router.cpp b/src/mesh/Router.cpp index 5f6ca9338..d397f1c5a 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -653,13 +653,14 @@ void Router::handleReceived(meshtastic_MeshPacket *p, RxSource src) if (!skipHandle) { MeshModule::callModules(*p, src); - if(config.network.routingAlgorithm == meshtastic_Config_RoutingConfig_FishEyeState && moduleConfig.fish_eye_state_routing.enabled && (isToUs(p) && (p->decoded.dest != nodeDB->getNodeNum()) && (p->decoded.dest != 0) && (p->decoded.dest != NODENUM_BROADCAST))){ + if(config.network.routingAlgorithm == meshtastic_Config_RoutingConfig_FishEyeState && moduleConfig.fish_eye_state_routing.enabled && (!isToUs(p) && (p->decoded.dest == nodeDB->getNodeNum()) && (p->to != 0) && (p->to != NODENUM_BROADCAST))){ meshtastic_MeshPacket *copy = allocForSending(); copy->decoded = p->decoded; - copy->to = fishEyeStateRoutingModule->getNextHopForID(copy->decoded.dest); + copy->to = p->to; + copy->decoded.dest = fishEyeStateRoutingModule->getNextHopForID(copy->to); copy->from = nodeDB->getNodeNum(); char * logout = ""; - sprintf(logout, "Forwarding Package to Node %u to Next-Hop %u",p->decoded.dest,copy->to); + sprintf(logout, "Forwarding Package to Node %u to Next-Hop %u",copy->to,copy->decoded.dest); LOG_DEBUG(logout); service->sendToMesh(copy); }