Hum?
I'm not sure I get it.
The client does a connection to the server. Sends a single line.
Reads until it gets an end-of-file/connection-closed indication when
readind, at which point the server is already gone, and the client canfinish.
Where are you thinking/seeing that you need to wait for anything?
Johnny
On 14/01/2026 17.58, Keith Halewood wrote:
There's a simplistic version currently
running on DUNE::
I've noticed a few problems with it.
For transparent DECnet I/O where channels are assigned and I/O
happens as though each end is local, DECnet seems to suggest that
the receiver (finger client in this case) should disconnect when it
has received what it expects to receive. This expectation should be
part of the client/server protocol such as an explicit end of data record.
In the TCP/IP world, a finger server disconnects when it's finished
sending all that it wants to send. There's no explicit high level
protocol stating end of data received by the client other than a
receive succeeding with zero length response.
Even with explicit $QIOW (waiting for I/O to complete), a DECnet
finger server will $ASSIGN to the incoming connection, do a few
$QIOWs and do a $DASSGN, which is quite destructive, including
cancelling all pending I/O requests. You would think that a $QIOW
would return when the I/O completes end to end but it seems to
complete when DECnet takes over.
Consequently, on slow links, a $DASSGN could cause DECnet not to
transmit data that's still pending. This is currently happening on a
comparatively slow link between DUNE and and a host in Australia.
The non-transparent case, where a lot more of the DECnet handshaking
is exposed, offers a synchronous disconnect which is initiated with
a $QIOW. The server would send this and the client would then have
to react as though it had received an EOF. In other words, it seems
that both ends need to be non-transparent.
A lot of this may be peculiar to DECnet on VMS which tries to hide
much of the complexity unless you go for full non-transparency. Even
then you can treat the connection as record-orientated even though
it's not like that underneath, and listen for events on the attached
mailbox device.
I really don't feel like doing $ASSIGN, $QIOW(read), a series of
$QIOW(write), then a wait for an unknown amount of time before $DASSGN.
Judging by some of the behaviour I've seen with user DECnet tasks
implemented by command procedures, that appears to be what VMS does
sometimes.
Is this what networking used to be like? Weird?
K
-----Original Message-----
From: Johnny Billquist [mailto:bqt@softjar.se]
Sent: 14 January 2026 13:42
To: hecnet(a)lists.dfupdate.se
Subject: [HECnet] Re: DECnet Finger Specification (Possible re-post)
and Tops-20 Finger Setup Documentation (New)
On 14/01/2026 14.36, Keith Halewood wrote:
Regarding finger for VMS, I have no real
recollection of how we
used to gather idle time for the 'job' (collection of process and
subprocesses attached to the terminal).
Back in the university days, some of the VMS systems had a small
fixed number of lines connected to the Gandalf (a terminal
server/switch) so we had to do something to prevent users hogging the lines.
I think we used to enumerate allocated terminal class devices every
10 minutes and remember their completed I/O counts. If the count
hadn't changed since the last sweep, then the user was logged out.
There may have been other considerations involving CPU time, etc.
but as I said the details are permanently paged out of my memory. I
don't think the above would be any good really for finger idle time.
I think this is one of those topics which I would just leave as
implementation specific. It depends on what the OS does, and what
can be easily extracted. Just present users with whatever
information makes sense. THe finger protocol is meant for human
consumption, so there are no hard requirements on what information
is provided, or in which form.
"Idle" in RSX is defined slightly different than in Unix or VMS. I
can tell you that much. But I can only report what RSX thinks here.
(If you were to hit enter on a terminal in RSX, you are still
considered idle.
No activity happened.)
I have the beginnings of a DECnet finger server
for VMS in Pascal,
which will produce summary information for who's logged, when, what
they're doing and where they're doing it from and also specific
information for matched users if supplied as a parameter, including
plan and the read/unread status of their mailbox. I won't do "poor
man's routing"
and I'm tempted to restrict the breadth of partial searches to a
complete username and/or complete word components of a user's real name.
This is also something I'd happily leave to each implementation. PMR
or not - up to each implementation. Just give some sort of error if
you don't allow it. Same with user matching.
It'll fit into the framework I have for a
DECnet server that
declares itself as an object and remains running, handling multiple
requests... but who wants a finger server hanging around?!
I don't, so the initial version will be instantiated on incoming
request.
That's how I do it in RSX, and that's how Unixes does it as well. I
think it would be the most sensible way to do it.
It'll be on DUNE's default DECnet account
if/when I finish it.
Would be nice to see it in operation.
Johnny
_______________________________________________
HECnet mailing list -- hecnet(a)lists.dfupdate.se To unsubscribe send
an email to hecnet-leave(a)lists.dfupdate.se
_______________________________________________
HECnet mailing list -- hecnet(a)lists.dfupdate.se To unsubscribe send
an email to hecnet-leave(a)lists.dfupdate.se
_______________________________________________
HECnet mailing list -- hecnet(a)lists.dfupdate.se To unsubscribe send
an email to hecnet-leave(a)lists.dfupdate.se