diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 389ef5882fb0163b9eb49190166265ffa9880196..d76c71e4b745b1cc16948455356a3c6696cf31a0 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -1274,18 +1274,12 @@ bool area_is_valid(uint areanum) return areanum < cfg.areas; } -// if full is true, compare full address, otherwise, exclude point in comparison -uint find_sysfaddr(faddr_t addr, bool full) +uint find_sysfaddr(faddr_t addr) { unsigned u; for(u=0; u < scfg.total_faddrs; u++) { - if(full && memcmp(&scfg.faddr[u], &addr, sizeof(addr)) == 0) - break; - if(!full - && scfg.faddr[u].zone == addr.zone - && scfg.faddr[u].net == addr.net - && scfg.faddr[u].node == addr.node) + if(memcmp(&scfg.faddr[u], &addr, sizeof(addr)) == 0) break; } @@ -5421,7 +5415,7 @@ void pack_netmail(void) addr.point = hdr.destpoint; printf("NetMail msg %s from %s (%s) to %s (%s): " ,getfname(path), hdr.from, fmsghdr_srcaddr_str(&hdr), hdr.to, smb_faddrtoa(&addr,NULL)); - if(sysfaddr_is_valid(find_sysfaddr(addr, true))) { /* In-bound, so ignore */ + if(sysfaddr_is_valid(find_sysfaddr(addr))) { /* In-bound, so ignore */ printf("in-bound\n"); fclose(fidomsg); continue; @@ -5474,24 +5468,26 @@ void pack_netmail(void) return; } - nodecfg=findnodecfg(&cfg, addr, /* exact: */false); - if(!sysfaddr_is_valid(find_sysfaddr(addr, false))) { - if(nodecfg!=NULL && nodecfg->route.zone && nodecfg->status==MAIL_STATUS_NORMAL - && !(hdr.attr&(FIDO_CRASH|FIDO_HOLD))) { - addr=nodecfg->route; /* Routed */ - lprintf(LOG_INFO, "Routing NetMail (%s) to %s",getfname(path),smb_faddrtoa(&addr,NULL)); - nodecfg=findnodecfg(&cfg, addr, /* exact: */false); - } - if(nodecfg == NULL && addr.point != 0) { + if(addr.point != 0) { + nodecfg = findnodecfg(&cfg, addr, /* exact: */true); + if(nodecfg == NULL) { fidoaddr_t boss = addr; boss.point = 0; - if((nodecfg = findnodecfg(&cfg, boss, /* exact: */true)) != NULL) { + if(!sysfaddr_is_valid(find_sysfaddr(boss))) { addr = boss; lprintf(LOG_INFO, "Routing NetMail (%s) to boss-node %s" ,getfname(path), smb_faddrtoa(&addr, NULL)); } } } + if(nodecfg == NULL) + nodecfg = findnodecfg(&cfg, addr, /* exact: */false); + if(nodecfg!=NULL && nodecfg->route.zone && nodecfg->status==MAIL_STATUS_NORMAL + && !(hdr.attr&(FIDO_CRASH|FIDO_HOLD))) { + addr=nodecfg->route; /* Routed */ + lprintf(LOG_INFO, "Routing NetMail (%s) to %s",getfname(path),smb_faddrtoa(&addr,NULL)); + nodecfg=findnodecfg(&cfg, addr, /* exact: */false); + } if(!bso_lock_node(addr)) continue; @@ -5634,7 +5630,7 @@ void find_stray_packets(void) delfile(packet, __LINE__); continue; } - uint sysfaddr = find_sysfaddr(pkt_orig, true); + uint sysfaddr = find_sysfaddr(pkt_orig); lprintf(LOG_WARNING,"Stray Outbound Packet (type %s) found, from %s address %s to %s: %s" ,pktTypeStringList[pkt_type], sysfaddr_is_valid(sysfaddr) ? "local" : "FOREIGN" ,smb_faddrtoa(&pkt_orig, NULL), smb_faddrtoa(&pkt_dest, str), packet); @@ -6286,7 +6282,7 @@ int main(int argc, char **argv) } for(uint u = 0; u < cfg.nodecfgs; u++) { - if(sysfaddr_is_valid(find_sysfaddr(cfg.nodecfg[u].addr, true))) { + if(sysfaddr_is_valid(find_sysfaddr(cfg.nodecfg[u].addr))) { lprintf(LOG_ERR, "Configuration ERROR: Linked node #%u is your own address: %s" ,u + 1, faddrtoa(&cfg.nodecfg[u].addr)); bail(1);