Hi!
If I send a certain amount of bytes (20344), it takes .3 seconds. But if
I send one that's just a single byte bigger than that, it takes over 5
seconds.
Aside from that unexpected jump, it otherwise looks linear with the
number of bytes sent.
I hunted down the problem, and discovered that if I slept for .1 seconds
before drakma:HTTP-REQUEST calls FINISH-OUTPUT, the problem goes away.
(Until, I suppose, I send something much bigger.)
Any ideas? Maybe this is a Lispworks problem?
(Lispworks 5.0.0, WinXP, Drakma 0.11.5)
Thanks,
Tayssir
PS: My test --
cl-user> (let* ((num-octets 20345)
(octets (coerce (loop repeat num-octets
collect (code-char 50))
'vector)))
(time (drakma:http-request "http://..."
:content-length num-octets
:content-type
"application/octet-stream"
:want-stream nil
:method :post
:content octets)))
User time = 0.000
System time = 0.010
Elapsed time = 5.225
Allocation = 37612 bytes
--- c:/Apps/asdf-libs/drakma-0.11.5/request.lisp.old 2008-12-16 16:18:33.618457600 +0100
+++ c:/Apps/asdf-libs/drakma-0.11.5/request.lisp 2008-12-16 16:18:09.156592000 +0100
@@ -560,6 +560,7 @@
(return-from finish-request))
(setf (chunked-stream-output-chunking-p
(flexi-stream-stream http-stream)) nil)
+ (sleep .1)
(finish-output http-stream)
(multiple-value-bind (server-protocol status-code status-text)
;; loop until status is NOT 100