diff --git a/src/packets.c b/src/packets.c index 38670c7..63b0b80 100644 --- a/src/packets.c +++ b/src/packets.c @@ -1025,14 +1025,16 @@ fwd_pkg (struct pkg *packet, _net_addr * addr) || packet->h.typ == PKG_special) for (pl = 1; pl < MAX_PLAYERS; pl++) if (PS_IS_netplayer (bman.players[pl].state) - && (bman.players[pl].net.flags & NETF_firewall) == NETF_firewall - && ((strncmp (bman.players[pl].net.addr.host, addr->host, LEN_SERVERNAME) != 0) - || (strncmp (bman.players[pl].net.addr.port, addr->port, LEN_PORT) != 0))) { - d_printf ("fwd_pkg %s:%s --> %s:%s\n", addr->host, addr->port, bman.players[pl].net.addr.host, bman.players[pl].net.addr.port); + && ((bman.players[pl].net.flags & NETF_firewall) == NETF_firewall + || (bman.players[addr->pl_nr].net.flags & NETF_firewall) == NETF_firewall) + && pl != addr->pl_nr) { + d_printf ("fwd_pkg %s:%s --> %s:%s\n", addr->host, addr->port, + bman.players[pl].net.addr.host, bman.players[pl].net.addr.port); send_pkg (packet, &bman.players[pl].net.addr); - } + } }; + int do_pkg (struct pkg *packet, _net_addr * addr) {