open
https://gitlab.synchro.net/main/sbbs/-/issues/1157
Synchronet version: 3.21f
Platform tested: Windows
Protocol tested: Telnet and RLogin
Client(s) tested: SyncTerm 1.8, SyncTerm 1.6, Netrunner, netcat/nc
File involved: text/nonodes.txt
Issue:
When all nodes are full and a new caller connects, Synchronet logs !No nodes available for login. and appears to attempt to print text/nonodes.txt, but the caller does not always see the contents before being disconnected.
The issue is intermittent. In repeated testing, SyncTerm often disconnects too quickly for the message to be visible. Netrunner appeared to show the message every time during testing. Netcat/nc showed the message almost every time, but if connections were made repeatedly/quickly, the message could still fail to appear.
Example log entries from a failed display case:
6/5 05:14:44p 2068 Telnet [192.168.1.12] !No nodes available for login. 6/5 05:14:44p Terminal Server Printing file: d:\sbbs\TEXT\NONODES.TXT 6/5 05:14:44p Terminal Server !ERROR 58 (Error 122 getting error description) sending on socket 2068
This occurred even when the client did not visibly display nonodes.txt.
Testing notes:
* Telnet with SyncTerm 1.8: intermittent; roughly about a 30% chance of seeing the no-nodes message during initial testing.
* RLogin: appeared similar to Telnet.
* SSH: disconnects without displaying the message; this was expected/not considered the same issue.
* SyncTerm 1.6: same behavior as newer SyncTerm versions.
* Netrunner: displayed nonodes.txt every time during testing.
* Netcat/nc: displayed nonodes.txt almost every time, but rapid repeated attempts could reproduce missing output.
* Remote test: another user tested 12 rapid attempts from outside the LAN; only 1 attempt failed to show nonodes.txt.
DMs theory from IRC:
The server may be waiting for the ringbuffer containing nonodes.txt to empty before disconnecting, but the ringbuffer contents are moved to a linear buffer in output_thread. There may be a race condition where Synchronet disconnects before or during that linear buffer being sent to the client.
Possible workaround discussed:
A short delay after flushing the ringbuffer would likely make the issue disappear, but not sure if this is the correct method.
Additional notes:
1) SyncTerm displays a disconnected popup after the disconnect, which can (does) obscure the nonodes.txt text even when it was displayed.
2) Had a sysop friend test so its not just me on my LAN and 99% of the time it DID show nonodes.txt.
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)