[drakma-devel] Closing streams with :want-stream t
Chris Dean
ctdean at sokitomi.com
Sat Feb 3 21:10:31 UTC 2007
Edi Weitz <edi at agharta.de> writes:
> However, if you do /not/ want to re-use the stream (which is obviously
> the case in your example as your function doesn't return the stream),
> you must of course always close it.
Sure, of course.
> (when stream
> (ignore-errors (close stream)))))
Fair enough. FWIW, my production code looks exactly like this.
(During my debugging I noticed that must-close was always t in my case.)
Regardless, if I make that change I still see the leak.
I have a data set I can send off-list if anyone is interested.
Cheers,
Chris Dean
(defun simple-get (url)
"Download the url using GET and return the body as a string."
(handler-case
(multiple-value-bind (stream code)
(drakma:http-request url :want-stream t :keep-alive nil :method :get)
(unwind-protect
(and stream
code
(= code 200)
(with-output-to-string (out)
(do ((ch (read-char stream nil :eof)
(read-char stream nil :eof)))
((not (characterp ch)))
(princ ch out))))
(when stream
(ignore-errors (close stream)))))
(error (condition)
(format t "Error ~s: ~a~%" url condition)
nil)))
More information about the Drakma-devel
mailing list