X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=project.lisp;h=5ff310459c74a72cf60b5dea71dc3c1869eaf98f;hb=1fa7614ba895d7a1bccd310cf9d8e8e1e2472d14;hp=119c929e00b93096c9462e584bc9c841b29dee7f;hpb=0c0d2b88b9c35f1da0f62566768ccc0b6a4c7aa2;p=wol.git diff --git a/project.lisp b/project.lisp index 119c929..5ff3104 100644 --- a/project.lisp +++ b/project.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: July 2003 ;;;; -;;;; $Id: project.lisp,v 1.11 2003/08/10 05:16:52 kevin Exp $ +;;;; $Id$ ;;;; ;;;; This file and Wol are Copyright (c) 2001-2003 by Kevin M. Rosenberg ;;;; ************************************************************************* @@ -15,9 +15,10 @@ (in-package #:wol) (defun wol-project (name &key (project-prefix "/") map index - (sessions t) (session-lifetime 18000) - (reap-interval 300) server - (connector :modlisp)) + (sessions t) (session-lifetime 18000) + (reap-interval 300) server + (connector :modlisp) + timeout) (unless server (setq server (ecase connector @@ -53,7 +54,8 @@ (:aserve (net.aserve:publish-prefix :prefix project-prefix :server server - :function 'wol-aserve-processor))) + :function 'wol-aserve-processor + :timeout timeout))) (if sessions (when (null (sessions (session-master project))) @@ -66,9 +68,6 @@ (when (and sessions (null *reaper-process*)) (setq *reaper-process* (start-reaper))))) -(defun stop-wol-project (name) - (remhash name *active-projects*)) - (defun wol-ml-processor (command) "Processes an incoming modlisp command" (let* ((req (command->request command @@ -190,6 +189,8 @@ (redirect-to-location url))))) (defun dispatch-request (req ent) + (setq *req* req) + (setq *ent* ent) (let ((proj (entity-project ent))) (if (is-index-request req ent) (redirect-entity (project-index proj) req ent) @@ -207,8 +208,6 @@ (defun find-project-for-request (req) (maphash (lambda (name project) (declare (ignore name)) - (setq cl-user::p project) - (setq cl-user::r req) (when (and (eq (project-server project) (or (request-aserve-server req) (request-ml-server req))) @@ -303,13 +302,15 @@ (defmacro with-wol-page ((req ent &key (format :html) (precompute t) headers - (response-code 200)) + (response-code 200) + timeout) &body body) `(if (request-aserve-server ,req) (net.aserve:with-http-response ((aserve-request ,req) (entity-aserve-entity ,ent) - :content-type (ml::format-string ,format) + :content-type (ml::format-string ,format ,headers) + :timeout ,timeout :response (case ,response-code (302 net.aserve::*response-moved-permanently*) @@ -350,7 +351,7 @@ ,result ,outstr ,stream) (declare (ignorable ,stream)) (write-header-line "Status" ,response-string) - (write-header-line "Content-Type" (ml::format-string ,fmt)) + (write-header-line "Content-Type" (ml::format-string ,fmt ,headers)) (dolist (,hdr ,headers) (write-header-line (car ,hdr) (cdr ,hdr))) (unless ,precomp