diff options
author | Michele Papalini <micpapal@cisco.com> | 2022-09-29 13:53:38 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2022-09-29 13:53:38 +0000 |
commit | 29647f687c8dadc90e2ba4d3a772eee09a1a4f1b (patch) | |
tree | 82e321ccbe834e0c0d5faa3c175e10f93ccacbff /libtransport/src/io_modules/forwarder/forwarder.cc | |
parent | d0c49cbf2887412e3b661d84032077db35c6d236 (diff) | |
parent | 7fd052761d21bfa38839a27cc9d03ef77a01f411 (diff) |
Merge "fix(rtc-production-protocol): do not modify packet just after sending it"
Diffstat (limited to 'libtransport/src/io_modules/forwarder/forwarder.cc')
-rw-r--r-- | libtransport/src/io_modules/forwarder/forwarder.cc | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/libtransport/src/io_modules/forwarder/forwarder.cc b/libtransport/src/io_modules/forwarder/forwarder.cc index bfe4dd5de..d5f0b589e 100644 --- a/libtransport/src/io_modules/forwarder/forwarder.cc +++ b/libtransport/src/io_modules/forwarder/forwarder.cc @@ -161,19 +161,24 @@ void Forwarder::onPacketReceived(Connector *connector, // Forward packet to local connectors } -void Forwarder::send(Packet &packet) { +void Forwarder::send(Packet &packet, Connector::Id connector_id) { // TODo Here a nice PIT/CS / FIB would be required:) // For now let's just forward the packet on the remote connector we get - if (remote_connectors_.begin() == remote_connectors_.end()) { - return; + for (auto &c : remote_connectors_) { + auto remote_endpoint = c.second->getRemoteEndpoint(); + DLOG_IF(INFO, VLOG_IS_ON(3)) + << "Sending packet to: " << remote_endpoint.getAddress() << ":" + << remote_endpoint.getPort(); + c.second->send(packet); } - auto remote_endpoint = - remote_connectors_.begin()->second->getRemoteEndpoint(); - DLOG_IF(INFO, VLOG_IS_ON(3)) - << "Sending packet to: " << remote_endpoint.getAddress() << ":" - << remote_endpoint.getPort(); - remote_connectors_.begin()->second->send(packet); + for (auto &c : local_connectors_) { + if (c.first != connector_id) { + DLOG_IF(INFO, VLOG_IS_ON(3)) + << "Sending packet to local connector " << c.first << std::endl; + c.second->receive({packet.shared_from_this()}); + } + } } void Forwarder::onPacketSent(Connector *connector, const std::error_code &ec) {} |