diff options
author | Alexey Shchepin <alexey@process-one.net> | 2006-10-01 01:53:37 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2006-10-01 01:53:37 +0000 |
commit | c72599cacdca34788fe0c342c9a4364d366c3821 (patch) | |
tree | cec5d05f11c3265faf5039b778c0a7de2109dd0d /src/ejabberd_s2s_in.erl | |
parent | * src/release_notes_1.1.2.txt: Fixed hanging paragraph (diff) |
* src/ejabberd_frontend_socket.erl: Support for frontend
connection manager
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_listener.erl: Likewise
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_service.erl: Likewise
* src/ejabberd_socket.erl: Likewise
* src/web/ejabberd_http_poll.erl: Likewise
SVN Revision: 657
Diffstat (limited to 'src/ejabberd_s2s_in.erl')
-rw-r--r-- | src/ejabberd_s2s_in.erl | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl index 64a85fc1..b5f89c95 100644 --- a/src/ejabberd_s2s_in.erl +++ b/src/ejabberd_s2s_in.erl @@ -37,6 +37,7 @@ -define(DICT, dict). -record(state, {socket, + sockmod, streamid, shaper, tls = false, @@ -99,7 +100,7 @@ socket_type() -> %% ignore | %% {stop, StopReason} %%---------------------------------------------------------------------- -init([Socket, Opts]) -> +init([{SockMod, Socket}, Opts]) -> ?INFO_MSG("started: ~p", [Socket]), Shaper = case lists:keysearch(shaper, 1, Opts) of {value, {_, S}} -> S; @@ -120,6 +121,7 @@ init([Socket, Opts]) -> Timer = erlang:start_timer(?S2STIMEOUT, self(), []), {ok, wait_for_stream, #state{socket = Socket, + sockmod = SockMod, streamid = new_id(), shaper = Shaper, tls = StartTLS, @@ -144,10 +146,10 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) -> SASL = if StateData#state.tls_enabled -> - case ejabberd_socket:get_peer_certificate( + case (StateData#state.sockmod):get_peer_certificate( StateData#state.socket) of {ok, _Cert} -> - case ejabberd_socket:get_verify_result( + case (StateData#state.sockmod):get_verify_result( StateData#state.socket) of 0 -> [{xmlelement, "mechanisms", @@ -204,7 +206,7 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> {xmlelement, Name, Attrs, Els} = El, TLS = StateData#state.tls, TLSEnabled = StateData#state.tls_enabled, - SockMod = ejabberd_socket:get_sockmod(StateData#state.socket), + SockMod = (StateData#state.sockmod):get_sockmod(StateData#state.socket), case {xml:get_attr_s("xmlns", Attrs), Name} of {?NS_TLS, "starttls"} when TLS == true, TLSEnabled == false, @@ -212,9 +214,10 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> ?INFO_MSG("starttls", []), Socket = StateData#state.socket, TLSOpts = StateData#state.tls_options, - TLSSocket = ejabberd_socket:starttls(Socket, TLSOpts), - send_element(StateData, - {xmlelement, "proceed", [{"xmlns", ?NS_TLS}], []}), + TLSSocket = (StateData#state.sockmod):starttls( + Socket, TLSOpts, + xml:element_to_string( + {xmlelement, "proceed", [{"xmlns", ?NS_TLS}], []})), {next_state, wait_for_stream, StateData#state{socket = TLSSocket, streamid = new_id(), @@ -227,10 +230,10 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> Auth = jlib:decode_base64(xml:get_cdata(Els)), AuthDomain = jlib:nameprep(Auth), AuthRes = - case ejabberd_socket:get_peer_certificate( + case (StateData#state.sockmod):get_peer_certificate( StateData#state.socket) of {ok, Cert} -> - case ejabberd_socket:get_verify_result( + case (StateData#state.sockmod):get_verify_result( StateData#state.socket) of 0 -> case AuthDomain of @@ -256,7 +259,7 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> end, if AuthRes -> - ejabberd_socket:reset_stream( + (StateData#state.sockmod):reset_stream( StateData#state.socket), send_element(StateData, {xmlelement, "success", @@ -500,7 +503,7 @@ handle_info(_, StateName, StateData) -> %%---------------------------------------------------------------------- terminate(Reason, _StateName, StateData) -> ?INFO_MSG("terminated: ~p", [Reason]), - ejabberd_socket:close(StateData#state.socket), + (StateData#state.sockmod):close(StateData#state.socket), ok. %%%---------------------------------------------------------------------- @@ -508,7 +511,7 @@ terminate(Reason, _StateName, StateData) -> %%%---------------------------------------------------------------------- send_text(StateData, Text) -> - ejabberd_socket:send(StateData#state.socket, Text). + (StateData#state.sockmod):send(StateData#state.socket, Text). send_element(StateData, El) -> send_text(StateData, xml:element_to_string(El)). @@ -516,7 +519,7 @@ send_element(StateData, El) -> change_shaper(StateData, Host, JID) -> Shaper = acl:match_rule(Host, StateData#state.shaper, JID), - ejabberd_socket:change_shaper(StateData#state.socket, Shaper). + (StateData#state.sockmod):change_shaper(StateData#state.socket, Shaper). new_id() -> |