Hello Ben,
I see two definitions of %allocate-resource in cl-http
one in clim-sys;resources.lisp like
(defmethod %allocate-resource ((resource resource) args &aux newly-created-p)
(with-slots (free-list) resource
(flet ((create-object ()
(let* ((constructor (resource-constructor resource))
(object (apply constructor resource args)))
(with-atomic-execution
(vector-push-extend object (resource-pool
resource)))
(setq newly-created-p t)
object)))
(declare (inline create-object))
;; find an object
(let ((object (or (with-atomic-execution (pop free-list))
(create-object)))
(initializer (resource-initializer resource)))
(when initializer
(if (clim-sys-p resource)
(apply initializer object args)
(apply initializer resource object args)))
(values object newly-created-p)))))
and a second in
mcl;server;resources.lisp
(defmethod %allocate-resource ((resource resource) args &aux newly-created-p)
(with-slots (free-list) resource
(flet ((create-object ()
(let* ((constructor (resource-constructor resource))
(object (apply constructor resource args)))
(with-atomic-execution
(vector-push-extend object (resource-pool
resource)))
(setq newly-created-p t)
object)))
(declare (inline create-object))
;; find an object
(let ((object (or (with-atomic-execution (pop free-list))
(create-object)))
(initializer (resource-initializer resource)))
(when initializer
(apply initializer resource object args))
(values object newly-created-p)))))
They only differ in the the form
(if (clim-sys-p resource)
(apply initializer object args)
(apply initializer resource object args))
In my environment the former definition is active since clim-sys is loaded
before cl-http-sys
I would bet a glass of spanish cava that for some reason in your
environment the clim-sys version of allocate resource is active.
Either you use the mcl definition or
change path-initialize-resourced-server to
(defun patch-initialize-resourced-server (server set-stream set-host
set-address)
(initialize-resourced-server 'http-server server set-stream set-host
set-address))
Hope that helps
Karsten
|