> > But both are necessary: (close S) to free the socket file descriptor,
> > and (task S) to remove the corresponding entry from the list in '*Run'.
> is this in the context of multiple picolisp processes? figured S is
> just a socket and calling (close) in a non forking server would be ok?
It doesn't matter whether there are multiple picolisp processes: Both
the open file descriptor, and the list of tasks in '*Run', are private
to each process.
So if you just close the file descriptor, but don't remove it from the
task list, you'll get a "Key conflict" error when the next time a new
socket with that file descriptor number is assigned a 'task', or when
the event handler processing '*Run' passes the closed file descriptor to