Hi, Dean.
I've tried your code, but I can't reproduce socket handle leak. I'm on Windows + Clisp.
I've made several calls to (SIMPLE-GET "http://microsoft.com") and (SIMPLE-GET "http://google.com"); and watching sockets using netstat. All sockets are closed properly.
What URLs lead to socket handle leak?
May it be that URLs you use point to servers that use http 1.1 but don't return close http header properly?
As far as I understand, MUST-CLOSE? = NIL means that stream may be reused in further calls of HTTP-REQUEST for the same server. If so and your are not intended to resuse stream in further calls, you can always CLOSE it.
Try to always CLOSE returned streams, without regard to MUST-CLOSE?.
Regards, -Anton