summaryrefslogtreecommitdiffstats
path: root/archives/extend/2014-July/000407.html
blob: 87466ecebcd3b0c85bf4f6f39c75d009a61cf83d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
 <HEAD>
   <TITLE> [99s-extend] [cowboy REST] returning {true, URL} to PUT
   </TITLE>
   <LINK REL="Index" HREF="index.html" >
   <LINK REL="made" HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20%5Bcowboy%20REST%5D%20returning%20%7Btrue%2C%20URL%7D%20to%20PUT&In-Reply-To=%3CCAH2nEUgJj1f8_RnXqeKqB1tFaDh%3DqzztOo9XF94S9auQ93dskg%40mail.gmail.com%3E">
   <META NAME="robots" CONTENT="index,nofollow">
   <style type="text/css">
       pre {
           white-space: pre-wrap;       /* css-2.1, curent FF, Opera, Safari */
           }
   </style>
   <META http-equiv="Content-Type" content="text/html; charset=us-ascii">
   <LINK REL="Previous"  HREF="000406.html">
   <LINK REL="Next"  HREF="000408.html">
 </HEAD>
 <BODY BGCOLOR="#ffffff">
   <H1>[99s-extend] [cowboy REST] returning {true, URL} to PUT</H1>
    <B>Samuel</B> 
    <A HREF="mailto:extend%40lists.ninenines.eu?Subject=Re%3A%20%5B99s-extend%5D%20%5Bcowboy%20REST%5D%20returning%20%7Btrue%2C%20URL%7D%20to%20PUT&In-Reply-To=%3CCAH2nEUgJj1f8_RnXqeKqB1tFaDh%3DqzztOo9XF94S9auQ93dskg%40mail.gmail.com%3E"
       TITLE="[99s-extend] [cowboy REST] returning {true, URL} to PUT">samuelrivas at gmail.com
       </A><BR>
    <I>Tue Jul  8 09:12:43 CEST 2014</I>
    <P><UL>
        <LI>Previous message: <A HREF="000406.html">[99s-extend] tring to understand ranch_conns_sup
</A></li>
        <LI>Next message: <A HREF="000408.html">[99s-extend] [cowboy REST] returning {true, URL} to PUT
</A></li>
         <LI> <B>Messages sorted by:</B> 
              <a href="date.html#407">[ date ]</a>
              <a href="thread.html#407">[ thread ]</a>
              <a href="subject.html#407">[ subject ]</a>
              <a href="author.html#407">[ author ]</a>
         </LI>
       </UL>
    <HR>  
<!--beginarticle-->
<PRE>Hi,

According to the documentation I should be able to return a new
location when handling a PUT request when using cowboy_rest protocol:

    The AcceptResource value is the name of the callback that will be
called if the
    content-type matches. It is defined as follow.

    Value type: true | {true, URL} | false

That works for &quot;true&quot; and &quot;false&quot; but not for &quot;{true, URL}&quot;, in that
case the Ranch listener crashes badly[1].

Looking into cowboy_rest.erl I see that the {true, URL} form is
restricted to POST requests:
<A HREF="https://github.com/extend/cowboy/blob/master/src/cowboy_rest.erl#L784">https://github.com/extend/cowboy/blob/master/src/cowboy_rest.erl#L784</A>

Is that intentional or should I submit a patch to add at least PUT and
PATCH to that condition (or remove all of them if that is not guarding
against something horrible)?

Regards

[1] Ranch crash log:
Ranch listener http_acceptor had connection process started with
cowboy_protocol:start_link/4 at &lt;0.2660.0&gt; exit with reason:
{{case_clause,{{true,&quot;/url&quot;},{http_req,#Port&lt;0.15864&gt;,ranch_tcp,keepalive,&lt;0.2660.0&gt;,&lt;&lt;&quot;PUT&quot;&gt;&gt;,'HTTP/1.1',{{127,0,0,1},56983},&lt;&lt;&quot;localhost&quot;&gt;&gt;,undefined,8080,&lt;&lt;&quot;/order&quot;&gt;&gt;,undefined,&lt;&lt;&gt;&gt;,undefined,[],[{&lt;&lt;&quot;user-agent&quot;&gt;&gt;,&lt;&lt;&quot;curl/7.22.0
(x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4
libidn/1.23 librtmp/2.3&quot;&gt;&gt;},{&lt;&lt;&quot;host&quot;&gt;&gt;,&lt;&lt;&quot;localhost:8080&quot;&gt;&gt;},{&lt;&lt;&quot;accept&quot;&gt;&gt;,&lt;&lt;&quot;*/*&quot;&gt;&gt;},{&lt;&lt;&quot;content-type&quot;&gt;&gt;,&lt;&lt;&quot;application/json&quot;&gt;&gt;}],[{&lt;&lt;&quot;content-type&quot;&gt;&gt;,{&lt;&lt;&quot;application&quot;&gt;&gt;,&lt;&lt;&quot;json&quot;&gt;&gt;,[]}},{&lt;&lt;&quot;if-modified-since&quot;&gt;&gt;,undefined},{&lt;&lt;&quot;if-none-match&quot;&gt;&gt;,undefined},{&lt;&lt;&quot;if-unmodified-since&quot;&gt;&gt;,undefined},{&lt;&lt;&quot;if-match&quot;&gt;&gt;,undefined},{&lt;&lt;&quot;accept&quot;&gt;&gt;,[{{&lt;&lt;&quot;*&quot;&gt;&gt;,&lt;&lt;&quot;*&quot;&gt;&gt;,[]},1000,[]}]}],undefined,[{charset,undefined},{media_type,{&lt;&lt;&quot;text&quot;&gt;&gt;,&lt;&lt;&quot;html&quot;&gt;&gt;,[]}}],waiting,undefined,&lt;&lt;&gt;&gt;,false,waiting,[{&lt;&lt;&quot;content-type&quot;&gt;&gt;,[&lt;&lt;&quot;text&quot;&gt;&gt;,&lt;&lt;&quot;/&quot;&gt;&gt;,&lt;&lt;&quot;html&quot;&gt;&gt;,&lt;&lt;&gt;&gt;]}],&lt;&lt;&gt;&gt;,undefined},{state}}},[{cowboy_rest,process_content_type,3,[{file,&quot;src/cowboy_rest.erl&quot;},{line,780}]},{cowboy_protocol,execute,4,[{file,&quot;src/cowboy_protocol.erl&quot;},{line,529}]}]}
-- 
Samuel
</PRE>


<!--endarticle-->
    <HR>
    <P><UL>
        <!--threads-->
	<LI>Previous message: <A HREF="000406.html">[99s-extend] tring to understand ranch_conns_sup
</A></li>
	<LI>Next message: <A HREF="000408.html">[99s-extend] [cowboy REST] returning {true, URL} to PUT
</A></li>
         <LI> <B>Messages sorted by:</B> 
              <a href="date.html#407">[ date ]</a>
              <a href="thread.html#407">[ thread ]</a>
              <a href="subject.html#407">[ subject ]</a>
              <a href="author.html#407">[ author ]</a>
         </LI>
       </UL>

<hr>
<a href="https://lists.ninenines.eu/listinfo/extend">More information about the Extend
mailing list</a><br>
</body></html>