+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>
start_link/2,
send_text/2,
send_element/2,
+ socket_type/0,
get_presence/1]).
%% gen_fsm callbacks
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).
%% External exports
-export([start/2,
start_link/2,
- match_domain/2]).
+ match_domain/2,
+ socket_type/0]).
%% gen_fsm callbacks
-export([init/1,
start_link(SockData, Opts) ->
gen_fsm:start_link(ejabberd_s2s_in, [SockData, Opts], ?FSMOPTS).
+socket_type() ->
+ xml_stream.
+
%%%----------------------------------------------------------------------
%%% Callback functions from gen_fsm
%%%----------------------------------------------------------------------
-export([start/2,
start_link/2,
send_text/2,
- send_element/2]).
+ send_element/2,
+ socket_type/0]).
%% gen_fsm callbacks
-export([init/1,
start_link(SockData, Opts) ->
gen_fsm:start_link(ejabberd_service, [SockData, Opts], ?FSMOPTS).
+socket_type() ->
+ xml_stream.
+
%%%----------------------------------------------------------------------
%%% Callback functions from gen_fsm
%%%----------------------------------------------------------------------
%% 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
gen_tcp:close(Socket),
Error
end;
- {error, Reason} = Error ->
+ {error, _Reason} = Error ->
Error
end.
-export([start/2,
start_link/2,
become_controller/1,
+ socket_type/0,
receive_headers/1,
url_encode/1]).
become_controller(_Pid) ->
ok.
+socket_type() ->
+ raw.
+
send_text(State, Text) ->
(State#state.sockmod):send(State#state.socket, Text).