Hi Edwin,

> (de app ()
>    (unless *SesId
>       (setq
>          *Port% (not *Gate)
>          *SesId (pack (in "/dev/urandom" (rd 7)) "~")
>          *Sock (port *HPorts '*Port) )
>       (timeout *Timeout) ) )
> 
> from there, *Sesid and *Timeout are  per per child globals. that much

Right.

In fact, the whole environment (global as well as local) is private for
each child.


> i can infer. *Gate is a flag for usage of httpGate? how about *Port%?

Yes. '*Gate' is an indicator that the communication with the client runs
via 'httpGate'. It is used to construct internal link addresses, base
hrefs etc.

'*Port%' is related to that. It is a flag which is set only temporarily
in the initial phase of a session, to suppress AJAX transfers (and thus
fall back to plain HTTP transfers) for the _first_ transaction of a
child process.

The reason is that AJAX transfers fail if the port changed. It seems to
believe that the request is from another server (according to the rule
is that XMLHttpRequests can only access content from the originating
server), despite the IP address is the same, just another port number.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to