keeping pristine CMUCL sockets

From: Conrad Barski (mygenericemailaccount_at_yahoo.com)
Date: 11/23/03


Date: 22 Nov 2003 20:33:31 -0800

My socket server keeps hosing my CMUCL sockets, a problem CLISP didn't
cause for me- Any abnormal exit will block the socket permanently, and
I can't figure out why...

If I run:

(let ((sock (extensions:create-inet-listener 1000)))
        (unwind-protect
                (let* ((x (extensions:accept-tcp-connection sock))
                       (f (sys:make-fd-stream x :input t :output t)))
                                (unwind-protect
                                        (break)
                                        (close f)))
                (extensions:close-socket sock)))

then connect to the socket (for instance, with "telnet localhost
1000") the program reaches the breakpoint. If I then "q" out of the
debugger kill the program, my protection clauses are triggered and the
socket should be returned to a clean state.

However, next time I try to connect to the socket, I get an exception
"Error binding socket to port 1000: Address already in use".

Is there something I'm not clearing out properly to return the
socket/port back to a default state?

-Thanks in advance everybody-