Digital Man wrote to Gamgee <=-
Re: Re: Sending mail to areafix
By: Gamgee to Digital Man on Sun Jun 07 2026 08:18 am
Naturally, just after sending the above I need to send a followup: I did notice a pattern now after looking more at 'binkstats.ini'. What I saw was that when my system calls out to a MYSTIC board, I get a "callout success" entry - but calling a system using BINKIT or BINKD, I get the "callout failure" entry. Every single time. Got to be something to that...
The corresponding log output for that BinkIt session should provide the reason.
But that's just it - there *is* no reason. The callout is a complete success, but it's entered in 'binkstats.ini' as a "callout failure".
Digital Man wrote to Gamgee <=-
But that's just it - there *is* no reason. The callout is a complete success, but it's entered in 'binkstats.ini' as a "callout failure".
You and Khronos were both right - it was a bug in BinkIT, not your configs, and no mail was ever actually lost. It was purely a stats-recording bug.
In a binkp/1.1 session (what you get with Synchronet, binkd, and most modern mailers) the two sides exchange a pair of M_EOB ("end of batch") frames to close out. When your side reached the end by *sending* that final EOB, the peer would close the connection first, and BinkIT would then try to send one more EOB onto the already-closed socket. That harmless send failure was being treated as a failed session - so a fully-successful callout got logged as "[callout failure]" in binkstats.ini, with the sent file(s) still listed, which is exactly why
it looked so contradictory.
binkp/1.0 peers (Mystic) send only a single EOB each and close differently, so those were always recorded correctly - matching the MYSTIC-works / SBBS-fails pattern you spotted.
Fixed in git just now: a closing-EOB send failure is ignored once all
of your sent files have been acknowledged. You'll see correct
accounting (and JSBinkP/6 in the vers= field) after your next update + recycle.
Thanks to you both for the clear reports and log snippets - they made
this an easy one to pin down.
But that's just it - there *is* no reason. The callout is a complete success, but it's entered in 'binkstats.ini' as a "callout failure".
You and Khronos were both right - it was a bug in BinkIT, not your
configs, and no mail was ever actually lost. It was purely a stats-recording bug.
In a binkp/1.1 session (what you get with Synchronet, binkd, and most
modern mailers) the two sides exchange a pair of M_EOB ("end of batch") frames to close out. When your side reached the end by *sending* that
final EOB, the peer would close the connection first, and BinkIT would
then try to send one more EOB onto the already-closed socket. That
harmless send failure was being treated as a failed session - so a fully-successful callout got logged as "[callout failure]" in
binkstats.ini, with the sent file(s) still listed, which is exactly why
it looked so contradictory.
binkp/1.0 peers (Mystic) send only a single EOB each and close
differently, so those were always recorded correctly - matching the MYSTIC-works / SBBS-fails pattern you spotted.
Fixed in git just now: a closing-EOB send failure is ignored once all
of your sent files have been acknowledged. You'll see correct accounting (and JSBinkP/6 in the vers= field) after your next update + recycle.
Thanks to you both for the clear reports and log snippets - they made
this an easy one to pin down.
Re: Re: Sending mail to areafix
By: Digital Man to Gamgee on Sun Jun 07 2026 06:42 pm
But that's just it - there *is* no reason. The callout is a complete success, but it's entered in 'binkstats.ini' as a "callout failure".
You and Khronos were both right - it was a bug in BinkIT, not your configs, and no mail was ever actually lost. It was purely a stats-recording bug.
In a binkp/1.1 session (what you get with Synchronet, binkd, and most modern mailers) the two sides exchange a pair of M_EOB ("end of batch") frames to close out. When your side reached the end by *sending* that final EOB, the peer would close the connection first, and BinkIT would then try to send one more EOB onto the already-closed socket. That harmless send failure was being treated as a failed session - so a fully-successful callout got logged as "[callout failure]" in binkstats.ini, with the sent file(s) still listed, which is exactly why it looked so contradictory.
binkp/1.0 peers (Mystic) send only a single EOB each and close differently, so those were always recorded correctly - matching the MYSTIC-works / SBBS-fails pattern you spotted.
Fixed in git just now: a closing-EOB send failure is ignored once all
of your sent files have been acknowledged. You'll see correct accounting (and JSBinkP/6 in the vers= field) after your next update + recycle.
Thanks to you both for the clear reports and log snippets - they made this an easy one to pin down.
Digital Man - an update on this... It's actually not related to the above context, but I'm now noticing in my logs a "warning" line that wasn't there before the above fix. I'm now using "master/135f08f0f" and seeing the below in logs after every remote system connection here (I'm a Fidonet hub):
Jun 13 09:27:00 palantir synchronet: srvc 0013 BINKP [157.245.114.161] Connection accepted on 192.168.254.70 port 24554 from port 59274
Jun 13 09:27:01 palantir synchronet: srvc 0013 BINKP BinkIT/2.42 invoked with options:
Jun 13 09:27:01 palantir synchronet: srvc 0013 BINKP JSBinkP/6 inbound connection from 157.245.114.161:59274
Jun 13 09:27:01 palantir synchronet: srvc 0013 BINKP Will encrypt session. Jun 13 09:27:01 palantir synchronet: srvc 0013 BINKP Peer version: BinkIT/2.42,JSBinkP/4,sbbs3.21a/Linux
Jun 13 09:27:01 palantir synchronet: srvc 0013 BINKP Remote addresses: 1:135/260@fidonet
Jun 13 09:27:01 palantir synchronet: srvc 0013 BINKP Inbound session for: 1:135/260@fidonet
Jun 13 09:27:01 palantir synchronet: srvc 0013 BINKP CRAM-MD5 password match for 1:135/260@fidonet
Jun 13 09:27:02 palantir synchronet: srvc 0013 BINKP !JavaScript warning /sbbs/exec/binkit.js line 1268: Disconnected
Jun 13 09:27:02 palantir synchronet: srvc 0013 BINKP [157.245.114.161] JavaScript service thread terminated (0 clients remain, 0 total, 68 served)
Hopefully the long lines didn't make it impossible to read, but the line I'm talking about is the "!JavaScript warning... line 1268: Disconnected".
That didn't used to be there, and now happens on every single inbound poll/connection, whether they transfer any mail packets or not.
Understood that it's "just a warning" but seems odd... Thanks.
Apparently binkit.js is EXITING at that failure and therefore... the
very last line of binkit.js which is "touch_semaphores();" never gets
called.
Digital Man wrote to Gamgee <=-
Apparently binkit.js is EXITING at that failure and therefore... the
very last line of binkit.js which is "touch_semaphores();" never gets called.
Great detective work - that's exactly it, and it's the same root cause
as the IRC/MRC "Disconnected" warnings from a couple weeks back
(#1156), just a nastier symptom.
A recent change (song-11-earn) had the Services server abort a
JavaScript service ~10 callbacks after its client socket disconnects - meant to kill scripts that loop forever after a hang-up. A follow-up (bolt-11-banner) exempted static services (the IRC daemon, MRC
connector), but binkit runs as a normal per-connection service, and it legitimately keeps working after the binkp peer disconnects: finishing
the batch, writing binkstats.ini, and - as its last act - touching the FIDOIN/BINKOUT semaphores. So the engine was killing it mid-cleanup
(your "line 1268: Disconnected"), and those semaphores never got
touched. Hence the downlink mail piling up.
Your workaround worked because dropping the binkstats block let the
script reach touch_semaphores() before the 10-callback abort fired.
Proper fix is in git now (wooden-11-choices): the client-disconnect
abort is a separate, scriptable knob (js.terminate_on_disconnect) decoupled from auto_terminate, and binkit.js sets it false so it's
never aborted on disconnect. auto_terminate again governs only server shutdown/recycle.
Pull + rebuild and FIDOIN/BINKOUT will fire normally again - you can revert your binkstats.ini edit. Thanks for the sharp diagnosis and the heads-up.
| Sysop: | DaiTengu |
|---|---|
| Location: | Appleton, WI |
| Users: | 1,136 |
| Nodes: | 10 (0 / 10) |
| Uptime: | 14:06:46 |
| Calls: | 14,591 |
| Calls today: | 2 |
| Files: | 186,473 |
| D/L today: |
9,280 files (2,866M bytes) |
| Messages: | 2,577,479 |