
Since Edit added the ultra-flexible macro define-easy-handler, I have replaced all my custom dispatch functions with it. There's a small issue with this macro, since it modifies the global *easy-handler-alist*. In production I have two server instances, one http and one https. I cannot easily say, for example, I want the following apply only to the https server instance. (define-easy-handler (home-page :uri "/login") () (with-html ...)) (define-easy-handler (home-page :uri "/my-account") () (with-html ...)) The problem is that start-server happens at run-time but define-easy-handler happens at load-time, so you cannot associate any server specific binding in define-easy-handler. Attached is a patch that introduce a slot :name to the server class and a global variable *servers* which is an a-list mapping names to server instances. With this you can do something like (define-easy-handler (home-page :uri "/hunchentoot/test/easy-home.html" :server-names '(:http)) () (with-html (:html (:body "Home page")))) (define-easy-handler (login-page :uri "/hunchentoot/test/easy-login.html" :server-names '(:https)) () (with-html (:html (:body "Secure login")))) (define-easy-handler (common-page :uri "/hunchentoot/test/easy-common.html" :server-names '(:https :http)) () (with-html (:html (:body "Common page")))) (start-server :name :http :port 8000) (stop-server :http) (start-server :name :https :port 4443) (stop-server :https) If you are not using multiple servers, this change will be transparent. I'd appreciate any suggestions. Regards, -- Mac