Restore SO_LINGER and TCP_NODELAY as they weren't the source of an earlier
authorMatthew Mondor <mmondor@pulsar-zone.net>
Fri, 9 Sep 2011 13:01:56 +0000 (13:01 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Fri, 9 Sep 2011 13:01:56 +0000 (13:01 +0000)
(now fixed) bug.

mmsoftware/cl/server/ecl-mp-server.lisp

index 0eaf0fa..5c7aaad 100644 (file)
@@ -1,4 +1,4 @@
-;;; $Id: ecl-mp-server.lisp,v 1.24 2011/09/06 07:58:00 mmondor Exp $
+;;; $Id: ecl-mp-server.lisp,v 1.25 2011/09/09 13:01:56 mmondor Exp $
 
 #|
 
@@ -83,7 +83,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 (in-package :server)
 
 (defparameter *rcsid*
-  "$Id: ecl-mp-server.lisp,v 1.24 2011/09/06 07:58:00 mmondor Exp $")
+  "$Id: ecl-mp-server.lisp,v 1.25 2011/09/09 13:01:56 mmondor Exp $")
 
 
 (defun noop (&rest args)
@@ -861,6 +861,8 @@ unsigned-byte buffer.")
               ;; simply use one thread per accepting socket, and defer
               ;; requests to already launched threads in the pool like
               ;; mmserver(3) does, rather than the current method...
+              ;; After further investigation, the crashes appear to happen
+              ;; in the boehm-gc code.
               (mp:with-lock (*accept-lock*)
                 (socket-accept *server-socket*))
             (let ((session (make-session)))
@@ -869,10 +871,9 @@ unsigned-byte buffer.")
                 ;; performance, but Linux unfortunately requires them to
                 ;; be here as it doesn't inherit options.
                 (setf (sockopt-keep-alive socket) t
-                      (sockopt-receive-timeout socket) timeout)
-; XXX Currently disabling the following to solve what appears to be ECL bugs
-; XXX                 (sockopt-linger socket) 0
-; XXX                 (sockopt-tcp-nodelay socket) t)
+                      (sockopt-receive-timeout socket) timeout
+                      (sockopt-linger socket) 0
+                      (sockopt-tcp-nodelay socket) t)
                 (let ((client-stream
                        (socket-make-stream socket
                                            :input t