On Tue, 06 Feb 2007 01:46:02 +0100, Edi Weitz edi@agharta.de wrote:
I've now done a full run through the test URLs you sent and they provide for a lot of interesting problematic cases. I'll update Drakma and probably Chunga with bugfixes and/or workarounds in the next days.
OK, see the new releases of Drakma and Chunga. I can now run Drakma (tested on LWW 5.0.1) through Chris Dean's 1600+ test cases with only very few warnings and errors. These are:
1. Charsets like GB2312 that FLEXI-STREAMS doesn't know.
2. Headers sent by the server which are really corrupt.
3. Network-related errors like "Unknown host".
4. Five cases of "End of file while reading ...".
I'm only concerned about #4, but unfortunately these aren't reproducible. I'll see what I can find out, but if someone has an idea, please step forward.
FWIW, this is the function I used for testing:
(defun simple-get (url) (handler-case (let ((puri:*strict-parse* nil) (flex:*provide-use-value-restart* t) (flex:*substitution-char* #?)) (multiple-value-bind (stream code) (drakma:http-request url :cookie-jar (make-instance 'drakma:cookie-jar) :want-stream t) (unwind-protect (and stream (eql 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 :abort t)))))) (error (condition) (format t "~&Error (~A): ~A~%%" url condition) nil)))
Edi.