The following patch fixes the case where one sends chunked data to a hunchentoot server with, say, a PUT request. We weren't paying attention to the transfer-encoding in get-post-data.
Also, we should support looking for both "chunked" and "Chunked", so I use string-equal instead of equalp here.
thanks,
Cyrus
On Fri, 27 Jun 2008 16:34:44 -0700, Cyrus Harmon ch-tbnl@bobobeach.com wrote:
The following patch fixes the case where one sends chunked data to a hunchentoot server with, say, a PUT request. We weren't paying attention to the transfer-encoding in get-post-data.
Thanks for catching that. This is essentially what is already done in process-request, but due to the refactoring Hans and I did it happens too late at that point.
I think get-post-data is not the right place for this, though. Switching chunking on or off should happen "one level further up" so to say. I'll try to fix this over the weekend.
Also, we should support looking for both "chunked" and "Chunked", so I use string-equal instead of equalp here.
equalp already does that... :)
Thanks, Edi.
On Jun 27, 2008, at 4:46 PM, Edi Weitz wrote:
On Fri, 27 Jun 2008 16:34:44 -0700, Cyrus Harmon <ch-tbnl@bobobeach.com
wrote:
The following patch fixes the case where one sends chunked data to a hunchentoot server with, say, a PUT request. We weren't paying attention to the transfer-encoding in get-post-data.
Thanks for catching that. This is essentially what is already done in process-request, but due to the refactoring Hans and I did it happens too late at that point.
I think get-post-data is not the right place for this, though. Switching chunking on or off should happen "one level further up" so to say. I'll try to fix this over the weekend.
Ah, right. I see that it's the fact that this is an initarg to the request object that then gets passed to process-request that makes this tricky.
One hacky fix is to do:
--- server.lisp (revision 3371) +++ server.lisp (working copy) @@ -500,7 +500,8 @@ (when (member "chunked" transfer-encodings :test #'equalp) ;; turn chunking on before we read the request body (setf *hunchentoot-stream* (make-chunked-stream *hunchentoot-stream*) - (chunked-stream-input-chunking-p *hunchentoot- stream*) t)))) + (chunked-stream-input-chunking-p *hunchentoot- stream*) t + (slot-value request 'content-stream) *hunchentoot-stream*)))) (let* ((*request* request) backtrace) (multiple-value-bind (body error)
Also, we should support looking for both "chunked" and "Chunked", so I use string-equal instead of equalp here.
equalp already does that... :)
d'oh!
thanks,
Cyrus
On Fri, 27 Jun 2008 17:02:15 -0700, Cyrus Harmon ch-tbnl@bobobeach.com wrote:
(chunked-stream-input-chunking-p *hunchentoot-
stream*) t))))
(chunked-stream-input-chunking-p *hunchentoot-
stream*) t
(slot-value request 'content-stream)
You should get yourself a decent email client... :)