Works great. Thanks! Daniel
On Tue, Sep 13, 2011 at 7:58 AM, Jay McCarthy <jay.mccar...@gmail.com>wrote: > I just pushed a fix to these issues. > > Problem 1 was that I only read request bodies on POSTs. > > Problem 2 was that I misread the spec and didn't see that request > bodies had to have Content-Length fields. > > Jay > > On Mon, Sep 12, 2011 at 12:29 PM, Daniel MacDougall > <dmacdoug...@gmail.com> wrote: > > Thanks for the reply. See below for the server code I'm using. > > I narrowed down the problem a bit and there are actually two different > but > > related issues. The first is that request data is ignored for non-POST, > > non-PUT requests: > > $ curl http://localhost:8000 -d "abcd" -X POST > > <html><p>POST</p><p>abcd</p></html> > > $ curl http://localhost:8000 -d "abcd" -X PATCH > > <html><p>PATCH</p><p>No request body</p></html> > > The second problem is that POST and PUT requests hang when no request > body > > is specified: > > $ curl http://localhost:8000 -X POST (hangs) > > $ curl http://localhost:8000 -X PUT (hangs) > > No server errors, even after killing the request. I imagine the server is > > waiting on the request stream to parse a request body that will never > come. > > Daniel > > --- > > And here's the server code: > > #lang racket > > (require web-server/servlet-env > > web-server/http/xexpr > > web-server/http/request-structs > > web-server/dispatch) > > (define-values (app-dispatch app-url) > > (dispatch-rules > > [("") index] > > [else index])) > > (define (index req) > > (response/xexpr `(html (p ,(bytes->string/utf-8 (request-method req))) > > (p ,(cond ((bytes? (request-post-data/raw req)) > > (bytes->string/utf-8 > > (request-post-data/raw req))) > > (else "No request body")))))) > > (serve/servlet app-dispatch > > #:port 8000 > > #:servlet-regexp #rx"" > > #:command-line? #t) > > On Mon, Sep 12, 2011 at 5:50 AM, Jay McCarthy <jay.mccar...@gmail.com> > > wrote: > >> > >> This sounds strange to me. Request objects have a 'method' field that > >> you can look at it. The bindings are a promise so that non-form-data > >> POST content doesn't get erroneously parsed as bindings (unless you > >> force the promise). This is all in place so that you can implement > >> which ever methods you want without interference from the server's > >> default behavior. Can you post a small example that has the hanging > >> error? > >> > >> Jay > >> > >> On Sat, Sep 10, 2011 at 8:12 PM, Daniel MacDougall > >> <dmacdoug...@gmail.com> wrote: > >> > Hi, > >> > I'm trying to build a web server that responds to [POST/PUT/DELETE] > >> > requests. If I use the built-in web server and POST to a url I have > >> > defined > >> > a dispatch function for, the request hangs indefinitely. The docs say > >> > that > >> > the web server tries to hide the details of the request method from > you. > >> > Is > >> > there any way to work around this? Or am I limited to defining GET > >> > requests > >> > with continuations? > >> > Thanks, > >> > Daniel > >> > _________________________________________________ > >> > For list-related administrative tasks: > >> > http://lists.racket-lang.org/listinfo/users > >> > > >> > >> > >> > >> -- > >> Jay McCarthy <j...@cs.byu.edu> > >> Assistant Professor / Brigham Young University > >> http://faculty.cs.byu.edu/~jay > >> > >> "The glory of God is Intelligence" - D&C 93 > > > > > > > > -- > Jay McCarthy <j...@cs.byu.edu> > Assistant Professor / Brigham Young University > http://faculty.cs.byu.edu/~jay > > "The glory of God is Intelligence" - D&C 93 >
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users