diff options
author | Badlop <badlop@process-one.net> | 2009-08-31 16:29:25 +0000 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2009-08-31 16:29:25 +0000 |
commit | fd57ec58721f02172a42b65dba47582b2035d4b3 (patch) | |
tree | 4fd93a13078b7d4810b5e5b5807701711f16351c /src/ejabberd_c2s.erl | |
parent | Remove the word "END" of release_notes file because it seems unnecessary. (diff) |
Support zlib compression after STARTTLS (thanks to Aleksey Shchepin)(EJAB-499)
SVN Revision: 2571
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r-- | src/ejabberd_c2s.erl | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 1c4a92bb8..88d26b1d5 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -278,7 +278,8 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) -> Zlib = StateData#state.zlib, CompressFeature = case Zlib andalso - (SockMod == gen_tcp) of + ((SockMod == gen_tcp) orelse + (SockMod == tls)) of true -> [{xmlelement, "compression", [{"xmlns", ?NS_FEATURE_COMPRESS}], @@ -628,7 +629,8 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> tls_enabled = true }); {?NS_COMPRESS, "compress"} when Zlib == true, - SockMod == gen_tcp -> + ((SockMod == gen_tcp) or + (SockMod == tls)) -> case xml:get_subtag(El, "method") of false -> send_element(StateData, @@ -1415,11 +1417,18 @@ get_auth_tags([_ | L], U, P, D, R) -> get_auth_tags([], U, P, D, R) -> {U, P, D, R}. +%% Copied from ejabberd_socket.erl +-record(socket_state, {sockmod, socket, receiver}). + get_conn_type(StateData) -> case (StateData#state.sockmod):get_sockmod(StateData#state.socket) of gen_tcp -> c2s; tls -> c2s_tls; - ejabberd_zlib -> c2s_compressed; + ejabberd_zlib -> + case ejabberd_zlib:get_sockmod((StateData#state.socket)#socket_state.socket) of + gen_tcp -> c2s_compressed; + tls -> c2s_compressed_tls + end; ejabberd_http_poll -> http_poll; ejabberd_http_bind -> http_bind; _ -> unknown |