From deaa8140f589d430ea4e9b6b405b0def581d5630 Mon Sep 17 00:00:00 2001 From: Alexey Khromov Date: Sat, 22 Mar 2025 21:52:08 +0300 Subject: [PATCH] Fix binkp overrides --- source/bforce/prot_binkp.c | 14 +++++++++----- source/bforce/sess_common.c | 12 +++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/source/bforce/prot_binkp.c b/source/bforce/prot_binkp.c index 810ca29..b86e702 100644 --- a/source/bforce/prot_binkp.c +++ b/source/bforce/prot_binkp.c @@ -717,14 +717,16 @@ case BPMSG_ADR: /* List of addresses */ bstate->extraislast = false; sprintf(bstate->extracmd+1,"OPT MB CRYPT"); s_override ovr; + DEB((D_24554, "process adr overrides")); for(i = 0; i < state.n_remoteaddr; i++) { ovr.sFlags = ""; override_get (&ovr, state.remoteaddrs[i].addr, 0); if (nodelist_checkflag (ovr.sFlags, "NR")==0) { - strcat (bstate->extracmd+1, " NR"); - break; - } + strcat (bstate->extracmd+1, " NR"); + break; + } } + DEB((D_24554, "process adr overrides")); } // further use extracmd only for errors @@ -1217,13 +1219,15 @@ void binkp_process_ADR(char *buffer) { s_faddr addr; char *p, *q; - + DEB((D_24554, "process ADR: %s", buffer)); for( p = string_token(buffer, &q, NULL, 0); p; p = string_token(NULL, &q, NULL, 0) ) { if( ftn_addrparse(&addr, p, FALSE) ) log("BinkP got unparsable address \"%s\"", string_printable(p)); - else + else { session_addrs_add(&state.remoteaddrs, &state.n_remoteaddr, addr); + DEB((D_24554, "process ADR complete")); + } } } diff --git a/source/bforce/sess_common.c b/source/bforce/sess_common.c index b5043ea..f45e984 100644 --- a/source/bforce/sess_common.c +++ b/source/bforce/sess_common.c @@ -135,14 +135,16 @@ int override_get(s_override *dest, s_faddr addr, int line) { s_override *p; int curline = 0; - p = conf_override(cf_override, addr); curline = 0; - while( p && curline < line ) + if (line > 0) { - p = p->hidden; - ++curline; + while( p && curline < line ) + { + p = p->hidden; + ++curline; + } } if( p && curline == line ) @@ -152,7 +154,7 @@ int override_get(s_override *dest, s_faddr addr, int line) } else if( line == 0 ) return 0; - else + else return 1; }