I've been working on adapting existing Lisp code to communicate with a socket server with the end goal of allowing a couple of different web based clients (one using Flash, another in Processing) to communicate with the Lisp server.  I've run into a couple of specific roadblocks and was wondering if anyone could help.

The first issue is that the lisp server is crashing when a client disconnects.  I'm seeing an error similar to the following:

debugger invoked on a END-OF-FILE in thread #<THREAD RUNNING {1003707001}>:
  end of file on #<SB-SYS:FD-STREAM for "a socket" {10037EFDE1}>

If we could get past this one, we'd be able to move forward quite a bit.

The second issue is that the Lisp server currently blocks when one connection is made, preventing other clients from connecting simultaneously.  I've assumed that sbcl's threading might help here, but I didn't have any luck with it myself (most likely due to lack of experience).

I based the server on the following example:

I'd be happy to provide more info if it helps.