(require "comm")
-(defun make-socket-server (name port function &key wait (format :text))
- (comm:start-up-server
- :function (lambda (handle)
- (let ((stream (make-instance 'comm:socket-stream :socket handle
- :direction :io
- :element-type 'base-char)))
- (mp:process-run-function
- (next-worker-name) '()
- 'apache-command-issuer stream function)))
- :service port :process-name name))
+(defvar *processor*)
+(let ((*processor* nil))
+
+ (defun make-socket-server (name function port &key wait (format :text))
+ (setq *processor* function)
+ (values
+ (comm:start-up-server
+ :service port
+ :process-name name
+ :function 'socket-worker)
+ nil))
+
+ (defun socket-worker (socket)
+ (let ((stream (make-instance 'comm:socket-stream :socket socket
+ :direction :io
+ :element-type 'base-char)))
+ (mp:process-run-function
+ (next-worker-name) '()
+ 'apache-command-issuer stream *processor*))))