                 f = () ->
                     delete _remember_me_cache[key]
                 if has_access
-                    setTimeout(f, 1000*60*6)    # access lasts 6 minutes (i.e., if you revoke privs to a user they could still hit the port for 5 minutes)
+                    setTimeout(f, 1000*60*6)    # access lasts 6 minutes (i.e., if you revoke privs to a user they could still hit the port for this long)
                 else
                     setTimeout(f, 1000*60*2)    # not having access lasts 2 minute
                 opts.cb(err, has_access)

                    dbg("websocket upgrade -- using cache")
                proxy.ws(req, socket, head)


#############################################################
# Client = a client that is connected via a persistent connection to the hub

        #buffer = httpProxy.buffer(req)  # see http://stackoverflow.com/questions/11672294/invoking-an-asynchronous-method-inside-a-middleware-in-node-http-proxy

        dbg = (m) -> winston.debug("http_proxy_server(#{req_url}): #{m}")
        dbg()

        cookies = new Cookies(req, res)
        remember_me = cookies.get(program.base_url + 'remember_me')

        if not remember_me?

            # before giving an error, check on possibility that file is public
            public_raw req_url, res, (err, is_public) ->
                if not is_public
                    res.writeHead(500, {'Content-Type':'text/html'})
                    res.end("Please login to <a target='_blank' href='https://cloud.sagemath.com'>https://cloud.sagemath.com</a> with cookies enabled, then refresh this page.")

            return

        target remember_me, req_url, (err, location) ->
