I've finished the timeout functionality so that the Tops-20 finger server will only wait so long before punting the connection (don't worry, I'm very generous...)
I'm now working on the logging functionality. Again, on a
connection interrupt, the finger server grabs a bunch of meta-data
about the connection and displays it:
FNGSRV(1): Sunday, 6-October-2024 12:23:36.52412 AM-EDT
From: VENTI2, User: SLOGIN, Data: STREAM*
Object Type: Generic (FINGER), Segment Size: 1459
Local Flow Control: Segment, Remote Flow Control: Segment
Link Quota: Input Percentage: 50, Buffers: 16, Input Goal: 0
I have three concerns here (or maybe two and a half)
1) I want to write this information to a log file,
2) Since the data is written by concurrent server sub-forks,
a) Data can get overwritten
b) Latency to start the finger sub-sub-forks is increased
The solution is simple enough, I grab everything in the server sub-fork and ship it up to the controller through shared memory for later formatting and storage (and maybe printing).
When reviewing what meta-data can be gotten, I noticed that an
explicit connection confirm (MTOPR%
function .MOCC) can take a pointer
to an optional sixteen bytes of data. What I can't quite tell
from the documentation is whether the server reads this or whether
the server writes it. I find myself being unsure of the wording.
I don't see a single instance of any Tops-20 DECnet program using this, so no help there. I think this is case 1., that is, the server has the option of writing it. However, I was wondering what specification this is in (maybe NSP 4?) and where, so I could read it before I look at the monitor sources to see how the client would read it. I'm assuming it would show up at the client as optional data?