|
|
@@ -2129,7 +2129,7 @@ void peer_recv_handler_send (struct peer_data *peer, uint8_t *data, int data_len
|
|
|
int orig_data_len = data_len;
|
|
|
|
|
|
int dp_good = 0;
|
|
|
- struct peer_data *relay_src;
|
|
|
+ struct peer_data *src_peer;
|
|
|
struct peer_data *relay_dest = NULL;
|
|
|
int local = 0;
|
|
|
|
|
|
@@ -2166,6 +2166,12 @@ void peer_recv_handler_send (struct peer_data *peer, uint8_t *data, int data_len
|
|
|
|
|
|
dp_good = 1;
|
|
|
|
|
|
+ // find source peer
|
|
|
+ if (!(src_peer = find_peer_by_id(from_id))) {
|
|
|
+ peer_log(peer, BLOG_NOTICE, "receive: source peer %d not known", (int)from_id);
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
if (num_ids == 0) {
|
|
|
goto out;
|
|
|
}
|
|
|
@@ -2176,18 +2182,12 @@ void peer_recv_handler_send (struct peer_data *peer, uint8_t *data, int data_len
|
|
|
// frame is for us
|
|
|
|
|
|
// let the frame decider analyze the frame
|
|
|
- FrameDeciderPeer_Analyze(&peer->decider_peer, data, data_len);
|
|
|
+ FrameDeciderPeer_Analyze(&src_peer->decider_peer, data, data_len);
|
|
|
|
|
|
local = 1;
|
|
|
} else {
|
|
|
// frame is for someone else
|
|
|
|
|
|
- // find source peer
|
|
|
- if (!(relay_src = find_peer_by_id(from_id))) {
|
|
|
- peer_log(peer, BLOG_NOTICE, "receive: source peer %d not known", (int)from_id);
|
|
|
- goto out;
|
|
|
- }
|
|
|
-
|
|
|
// make sure the client is allowed to relay though us
|
|
|
if (!(peer->flags & SCID_NEWCLIENT_FLAG_RELAY_CLIENT)) {
|
|
|
peer_log(peer, BLOG_NOTICE, "relaying not allowed");
|
|
|
@@ -2218,7 +2218,7 @@ out:
|
|
|
|
|
|
// relay frame
|
|
|
if (relay_dest) {
|
|
|
- peer_submit_relayed_frame(relay_dest, relay_src, data, data_len);
|
|
|
+ peer_submit_relayed_frame(relay_dest, src_peer, data, data_len);
|
|
|
}
|
|
|
|
|
|
// submit to device
|