[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 2 questions - Art for UX400 / services need login

    Date: Fri, 15 Mar 91 12:51 EST
    From: barmar@Think.COM (Barry Margolin)

	Date: Fri, 15 Mar 91 1:11:16 CDT
	From: aihaug@AUSTIN.LOCKHEED.COM (Daniel A Haug)

	- We are getting close to installing a fielded, operational system
	  running on a UX400.  The application is strictly server-based running
	  on the board.  The problem is that one cannot invoke a service on
	  the machine without someone being logged in.  I suspect that I don't
	  have my service defined correctly.  Can anyone help?

    Does the server try to open files?  File system functions will only
    operate when the machine is logged in, since most file servers require
    user identification.  In particular, if this is on a UX400 and it's
    using the host's file system, NFS requires user identification so it may
    perform access checks.

    The easiest way around this is to wrap your server code with
    FS:WITH-AUTOMATIC-LOGIN-TO-SYS-HOST.  This arranges for the file system
    routines to automatically do "Login lisp-machine" if they try to run
    while not logged in; if it had to login automatically it will also
    logout automatically when leaving the WITH-AUTOMATIC-LOGIN-TO-SYS-HOST


Seems to me I recall problems with FS:WITH-AUTOMATIC-LOGIN-TO-SYS-HOST.  Maybe
they've been fixed...  I remember problems with it logging a user out if the
sequence goes
		Auto login
		User logs in
		Auto logout at exit of FS:WITH-AUTOMATIC-LOGIN-TO-SYS-HOST

That wreaks havoc with your open files if you're loading stuff at the time!

At one point I was simply binding SI:USER-ID in a server process but
that often lead to problems to.  (The FINGER string gets set only once
and it may get that ID rather than the real person logged in (I like to
do this for things that run possibly while a user is logged in).)  I
remember a problem that while you could access files locally, you
couldn't access files over the net (ie, if you bound SI:USER-ID on host
A, that process could get files on host A but not on host B).  I think that
particular problem occurred if you only bound  SI:USER-ID but did not do the
automatic login.

I think a good way to handle the situation in question would be to put a
form on the Warm Initialization list that logs in as someone (eg,
lisp-machine) if someone isn't logged in yet (and maybe after a short
delay to allow someone to login), save that world out, and use that
world for his server.  (Do NOT mark the machine as a SERVER-MACHINE in
the namespace unless that auto-login user's lispm-init enables services.)