Thanks for the reply. See below for the server code I&#39;m using.<div><br></div><div>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:</div>

<div><br></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">$ curl <a href="http://localhost:8000">http://localhost:8000</a> -d &quot;abcd&quot; -X POST</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">&lt;html&gt;&lt;p&gt;<b>POST</b>&lt;/p&gt;&lt;p&gt;<b>abcd</b>&lt;/p&gt;&lt;/html&gt;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">$ curl <a href="http://localhost:8000">http://localhost:8000</a> -d &quot;abcd&quot; -X PATCH</font><div style="font-family: &#39;courier new&#39;, monospace; ">

&lt;html&gt;&lt;p&gt;<b>PATCH</b>&lt;/p&gt;&lt;p&gt;<b>No request body</b>&lt;/p&gt;&lt;/html&gt;</div><div style="font-family: &#39;courier new&#39;, monospace; "><br></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">The second problem is that POST and PUT requests hang when no request body is specified:</font></div>

<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">$ curl <a href="http://localhost:8000">http://localhost:8000</a> -X POST (hangs)</font></div>

<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">$ curl <a href="http://localhost:8000">http://localhost:8000</a> -X PUT (hangs)</span></font></div>

<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">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.</font></div>

<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">Daniel</font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br>

</font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">---</font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">And here&#39;s the server code:</font></div>

<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">#lang racket</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">(require web-server/servlet-env</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">         web-server/http/xexpr</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">         web-server/http/request-structs</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">         web-server/dispatch)</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">(define-values (app-dispatch app-url)</font></div><div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    (dispatch-rules</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">     [(&quot;&quot;) index]</font></div><div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">     [else index]))</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">(define (index req)</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">  (response/xexpr `(html (p ,(bytes-&gt;string/utf-8 (request-method req)))</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">                         (p ,(cond ((bytes? (request-post-data/raw req))</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">                                    (bytes-&gt;string/utf-8 (request-post-data/raw req)))</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">                                   (else &quot;No request body&quot;))))))</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">(serve/servlet app-dispatch</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">               #:port 8000</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">               #:servlet-regexp #rx&quot;&quot;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">               #:command-line? #t)</font></div>

<br><div class="gmail_quote">On Mon, Sep 12, 2011 at 5:50 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;">

This sounds strange to me. Request objects have a &#39;method&#39; field that<br>
you can look at it. The bindings are a promise so that non-form-data<br>
POST content doesn&#39;t get erroneously parsed as bindings (unless you<br>
force the promise). This is all in place so that you can implement<br>
which ever methods you want without interference from the server&#39;s<br>
default behavior. Can you post a small example that has the hanging<br>
error?<br>
<br>
Jay<br>
<div><div></div><div class="h5"><br>
On Sat, Sep 10, 2011 at 8:12 PM, Daniel MacDougall<br>
&lt;<a href="mailto:dmacdougall@gmail.com">dmacdougall@gmail.com</a>&gt; wrote:<br>
&gt; Hi,<br>
&gt; I&#39;m trying to build a web server that responds to [POST/PUT/DELETE]<br>
&gt; requests. If I use the built-in web server and POST to a url I have defined<br>
&gt; a dispatch function for, the request hangs indefinitely. The docs say that<br>
&gt; the web server tries to hide the details of the request method from you. Is<br>
&gt; there any way to work around this? Or am I limited to defining GET requests<br>
&gt; with continuations?<br>
&gt; Thanks,<br>
&gt; Daniel<br>
</div></div>&gt; _________________________________________________<br>
&gt;  For list-related administrative tasks:<br>
&gt;  <a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
&gt;<br>
<font color="#888888"><br>
<br>
<br>
--<br>
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>
</font></blockquote></div><br></div></div>