- (catch-errors t))
- (let ((listener (make-instance 'listener :port port
- :name (next-server-name)
- :function 'apache-command-issuer
- :function-args (cons processor processor-args)
- :format :text
- :wait nil
- :catch-errors catch-errors)))
- (handler-case
- (make-socket-server listener)
- (error (e)
- (format t "~&Error while trying to start modlisp server~& ~A" e)
- (decf *listener-count*)
- (values nil nil))
- (:no-error (res)
- (declare (ignore res))
- (push listener *active-listeners*)
- listener))))
-
-(defun modlisp-stop (listener)
- (unless listener
- (cmsg "listener is NIL in modlisp-stop")
- (return-from modlisp-stop))
- (dolist (worker (workers listener))
- (close-active-socket (connection worker))
- (destroy-process (process worker)))
- (setf (workers listener) nil)
- (with-slots (process socket) listener
- (errorset (close-passive-socket socket) t)
- (errorset (destroy-process process) t))
- (setq *active-listeners* (remove listener *active-listeners*)))
+ (catch-errors t)
+ timeout
+ number-fixed-workers
+ remote-host-checker)
+ (let* ((server (make-instance 'ml-server
+ :processor processor
+ :processor-args processor-args
+ :port port))
+ (listener (make-instance 'listener :port port
+ :base-name "modlisp"
+ :function 'modlisp-command-issuer
+ :function-args (list server)
+ :format :text
+ :wait nil
+ :catch-errors catch-errors
+ :timeout timeout
+ :number-fixed-workers number-fixed-workers
+ :remote-host-checker remote-host-checker)))
+ (setf (listener server) listener)
+ (init/listener listener :start)
+ (setf *ml-server* server)
+ server))