]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_socket.erl: Support for non-xml sockets
authorAlexey Shchepin <alexey@process-one.net>
Mon, 25 Sep 2006 03:51:11 +0000 (03:51 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Mon, 25 Sep 2006 03:51:11 +0000 (03:51 +0000)
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_service.erl: Likewise
* src/web/ejabberd_http.erl: Likewise

SVN Revision: 629

ChangeLog
src/ejabberd_c2s.erl
src/ejabberd_s2s_in.erl
src/ejabberd_service.erl
src/ejabberd_socket.erl
src/web/ejabberd_http.erl

index b7e823c930eade14d1129a3eadd4707d433b45d9..98d0d0b623a0e7c83631347ebd4c767059702745 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,20 +1,29 @@
+2006-09-25  Alexey Shchepin  <alexey@sevcom.net>
+
+       * src/ejabberd_socket.erl: Support for non-xml sockets
+       * src/ejabberd_c2s.erl: Likewise
+       * src/ejabberd_s2s_in.erl: Likewise
+       * src/ejabberd_service.erl: Likewise
+       * src/web/ejabberd_http.erl: Likewise
+
 2006-09-24  Mickael Remond  <mickael.remond@process-one.net>
 
        * src/msgs/es.msg: Updated Spanish translation (thanks to Badlop).
 
-       * src/mod_muc/mod_muc_room.erl: Strings update (thanks to Serguei
-        Golovan).
-       * src/msgs/ru.msg: Updated Russian translation (thanks to Serguei
-        Golovan).
-       * src/msgs/uk.msg: Updated Ukrainian translation (thanks to Serguei
-        Golovan).
+       * src/mod_muc/mod_muc_room.erl: Strings update (thanks to Sergei
+       Golovan).
+       * src/msgs/ru.msg: Updated Russian translation (thanks to Sergei
+       Golovan).
+       * src/msgs/uk.msg: Updated Ukrainian translation (thanks to Sergei
+       Golovan).
        * src/msgs/fr.msg: Update French translation.
 
        * src/doc/guide.html: Minor W3C compliance fix in an Hevea
        generated URL.
        
-       * src/doc/features.html: Added to be consistent (guide.html is in the
-       repository to make Latex optional, but still allow access to the doc).
+       * src/doc/features.html: Added to be consistent (guide.html is in
+       the repository to make Latex optional, but still allow access to
+       the doc).
 
 2006-09-23  Mickael Remond  <mickael.remond@process-one.net>
 
index cebe83c8396d72a4f29334542e29f7650f4e6403..a9e0d01ef1899ae24b2ccee4028c9c0c8141a621 100644 (file)
@@ -17,6 +17,7 @@
         start_link/2,
         send_text/2,
         send_element/2,
+        socket_type/0,
         get_presence/1]).
 
 %% gen_fsm callbacks
@@ -98,6 +99,9 @@ start(SockData, Opts) ->
 start_link(SockData, Opts) ->
     gen_fsm:start_link(ejabberd_c2s, [SockData, Opts], ?FSMOPTS).
 
+socket_type() ->
+    xml_stream.
+
 %% Return Username, Resource and presence information
 get_presence(FsmRef) ->
     gen_fsm:sync_send_all_state_event(FsmRef, {get_presence}, 1000).
index 401996ec3b328f7bcfe4300205b7f09611ee4e05..64a85fc1ca85d6f52a0b08ee369d04f9badcd390 100644 (file)
@@ -14,7 +14,8 @@
 %% External exports
 -export([start/2,
         start_link/2,
-        match_domain/2]).
+        match_domain/2,
+        socket_type/0]).
 
 %% gen_fsm callbacks
 -export([init/1,
@@ -84,6 +85,9 @@ start(SockData, Opts) ->
 start_link(SockData, Opts) ->
     gen_fsm:start_link(ejabberd_s2s_in, [SockData, Opts], ?FSMOPTS).
 
+socket_type() ->
+    xml_stream.
+
 %%%----------------------------------------------------------------------
 %%% Callback functions from gen_fsm
 %%%----------------------------------------------------------------------
index 8a4f02b5537a1428cf8b8fc06d39934bb7d92b52..925915aa96a07984ad78c56a2e3b54a2d25debe4 100644 (file)
@@ -16,7 +16,8 @@
 -export([start/2,
         start_link/2,
         send_text/2,
-        send_element/2]).
+        send_element/2,
+        socket_type/0]).
 
 %% gen_fsm callbacks
 -export([init/1,
@@ -78,6 +79,9 @@ start(SockData, Opts) ->
 start_link(SockData, Opts) ->
     gen_fsm:start_link(ejabberd_service, [SockData, Opts], ?FSMOPTS).
 
+socket_type() ->
+    xml_stream.
+
 %%%----------------------------------------------------------------------
 %%% Callback functions from gen_fsm
 %%%----------------------------------------------------------------------
index 417d4f2eb21acdf83188f99d28316aa3228925f8..9b02188030f8ec49db9fd2581760ae867919424b 100644 (file)
 %% Description:
 %%--------------------------------------------------------------------
 start(Module, SockMod, Socket, Opts) ->
-    MaxStanzaSize =
-       case lists:keysearch(max_stanza_size, 1, Opts) of
-           {value, {_, Size}} -> Size;
-           _ -> infinity
-       end,
-    Receiver = ejabberd_receiver:start(Socket, SockMod, none, MaxStanzaSize),
-    SocketData = #socket_state{sockmod = SockMod,
-                              socket = Socket,
-                              receiver = Receiver},
-    {ok, Pid} = Module:start(SocketData, Opts),
-    case SockMod:controlling_process(Socket, Receiver) of
-       ok ->
-           ok;
-       {error, _Reason} ->
-           SockMod:close(Socket)
-    end,
-    ejabberd_receiver:become_controller(Receiver, Pid).
+    case Module:socket_type() of
+       xml_stream ->
+           MaxStanzaSize =
+               case lists:keysearch(max_stanza_size, 1, Opts) of
+                   {value, {_, Size}} -> Size;
+                   _ -> infinity
+               end,
+           Receiver = ejabberd_receiver:start(Socket, SockMod, none, MaxStanzaSize),
+           SocketData = #socket_state{sockmod = SockMod,
+                                      socket = Socket,
+                                      receiver = Receiver},
+           {ok, Pid} = Module:start(SocketData, Opts),
+           case SockMod:controlling_process(Socket, Receiver) of
+               ok ->
+                   ok;
+               {error, _Reason} ->
+                   SockMod:close(Socket)
+           end,
+           ejabberd_receiver:become_controller(Receiver, Pid);
+       raw ->
+           {ok, Pid} = Module:start({SockMod, Socket}, Opts),
+           case SockMod:controlling_process(Socket, Pid) of
+               ok ->
+                   ok;
+               {error, _Reason} ->
+                   SockMod:close(Socket)
+           end,
+           ejabberd_receiver:become_controller(Pid)
+    end.
 
 connect(Addr, Port, Opts) ->
     case gen_tcp:connect(Addr, Port, Opts) of
@@ -66,7 +78,7 @@ connect(Addr, Port, Opts) ->
                    gen_tcp:close(Socket),
                    Error
            end;
-       {error, Reason} = Error ->
+       {error, _Reason} = Error ->
            Error
     end.
 
index 5113f1afe1a55695f9447bc00740f1b08146af5a..3220925ecf9b97806954e4d45e0839ea14a0a025 100644 (file)
@@ -14,6 +14,7 @@
 -export([start/2,
         start_link/2,
         become_controller/1,
+        socket_type/0,
         receive_headers/1,
         url_encode/1]).
 
@@ -85,6 +86,9 @@ start_link({SockMod, Socket}, Opts) ->
 become_controller(_Pid) ->
     ok.
 
+socket_type() ->
+    raw.
+
 send_text(State, Text) ->
     (State#state.sockmod):send(State#state.socket, Text).