Works great. Thanks!<div><br>Daniel<br><br><div class="gmail_quote">On Tue, Sep 13, 2011 at 7:58 AM, Jay McCarthy <span dir="ltr">&lt;<a href="mailto:jay.mccarthy@gmail.com">jay.mccarthy@gmail.com</a>&gt;</span> wrote:<br>

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