]> granicus.if.org Git - ejabberd/commitdiff
* src/web/ejabberd_http.erl: Support PUT and DELETE methods in
authorBadlop <badlop@process-one.net>
Sat, 21 Jun 2008 00:19:57 +0000 (00:19 +0000)
committerBadlop <badlop@process-one.net>
Sat, 21 Jun 2008 00:19:57 +0000 (00:19 +0000)
ejabberd_http (thanks to Eric Cestari)(EJAB-662)

SVN Revision: 1373

ChangeLog
src/web/ejabberd_http.erl

index 1ef86c35411156d04a8b86e9c36e24efa812e0c9..5adbdd5112899084fca55c2f50f5dbaea5ae37fa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
 2008-06-21  Badlop  <badlop@process-one.net>
 
-       * doc/guide.tex: Explain that S2S outgoing first tries IPV4 and if
+       * src/web/ejabberd_http.erl: Support PUT and DELETE methods in
+       ejabberd_http (thanks to Eric Cestari)(EJAB-662)
+
+       * doc/guide.tex: Explain that S2S outgoing first tries IPv4 and if
        that fails then tries IPv6
        * doc/guide.html: Likewise
 
index a5391080381cde08064af87d12325f2d0148444b..51384a21628a925f7b566dd40c6da0abe2e6c126 100644 (file)
@@ -271,13 +271,14 @@ process(Handlers, Request) ->
            process(HandlersLeft, Request)
     end.
 
-process_request(#state{request_method = 'GET',
+process_request(#state{request_method = Method,
                       request_path = {abs_path, Path},
                       request_auth = Auth,
                       request_lang = Lang,
                       request_handlers = RequestHandlers,
                       sockmod = SockMod,
-                      socket = Socket} = State) ->
+                      socket = Socket} = State)
+  when Method=:='GET' orelse Method=:='HEAD' orelse Method=:='DELETE' ->
     case (catch url_decode_q_split(Path)) of
        {'EXIT', _} ->
            process_request(false);
@@ -296,7 +297,7 @@ process_request(#state{request_method = 'GET',
                    _ ->
                        SockMod:peername(Socket)
                end,
-           Request = #request{method = 'GET',
+           Request = #request{method = Method,
                               path = LPath,
                               q = LQuery,
                               auth = Auth,
@@ -319,7 +320,7 @@ process_request(#state{request_method = 'GET',
            end
     end;
 
-process_request(#state{request_method = 'POST',
+process_request(#state{request_method = Method,
                       request_path = {abs_path, Path},
                       request_auth = Auth,
                       request_content_length = Len,
@@ -327,7 +328,7 @@ process_request(#state{request_method = 'POST',
                       sockmod = SockMod,
                       socket = Socket,
                       request_handlers = RequestHandlers} = State)
-  when is_integer(Len) ->
+  when (Method=:='POST' orelse Method=:='PUT') andalso is_integer(Len) ->
     case SockMod of
        gen_tcp ->
            inet:setopts(Socket, [{packet, 0}]);
@@ -347,7 +348,7 @@ process_request(#state{request_method = 'POST',
                         LQ ->
                             LQ
                     end,
-           Request = #request{method = 'POST',
+           Request = #request{method = Method,
                               path = LPath,
                               q = LQuery,
                               auth = Auth,