Software /
code /
prosody
Annotate
plugins/mod_compression.lua @ 2280:0b0fe49e5251
Enable one way stream compression on s2s links.
author | Tobias Markmann <tm@ayena.de> |
---|---|
date | Sun, 29 Nov 2009 21:32:39 +0100 |
parent | 2279:49bc4c7bdef8 |
child | 2282:6f54dac3ec2d |
rev | line source |
---|---|
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
1 -- Prosody IM |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
2 -- Copyright (C) 2009 Tobias Markmann |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
3 -- |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
4 -- This project is MIT/X11 licensed. Please see the |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
5 -- COPYING file in the source package for more information. |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
6 -- |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
7 |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
8 local st = require "util.stanza"; |
1671
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
9 local zlib = require "zlib"; |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
10 local pcall = pcall; |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
11 |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
12 local xmlns_compression_feature = "http://jabber.org/features/compress" |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
13 local xmlns_compression_protocol = "http://jabber.org/protocol/compress" |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
14 local xmlns_stream = "http://etherx.jabber.org/streams"; |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
15 local compression_stream_feature = st.stanza("compression", {xmlns=xmlns_compression_feature}):tag("method"):text("zlib"):up(); |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
16 |
1676 | 17 local compression_level = module:get_option("compression_level"); |
18 -- if not defined assume admin wants best compression | |
19 if compression_level == nil then compression_level = 9 end; | |
20 | |
2279 | 21 |
1676 | 22 compression_level = tonumber(compression_level); |
23 if not compression_level or compression_level < 1 or compression_level > 9 then | |
24 module:log("warn", "Invalid compression level in config: %s", tostring(compression_level)); | |
25 module:log("warn", "Module loading aborted. Compression won't be available."); | |
26 return; | |
27 end | |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
28 |
1670 | 29 module:add_event_hook("stream-features", |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
30 function (session, features) |
1673
5f81cd6d4a92
Remove space at the end of a line.
Tobias Markmann <tm@ayena.de>
parents:
1672
diff
changeset
|
31 if not session.compressed then |
1674
250bddde4162
Add a TODO for s2s compression support.
Tobias Markmann <tm@ayena.de>
parents:
1673
diff
changeset
|
32 -- FIXME only advertise compression support when TLS layer has no compression enabled |
1672
614623f393c6
Add FIXME to remember TLS compression detection.
Tobias Markmann <tm@ayena.de>
parents:
1671
diff
changeset
|
33 features:add_child(compression_stream_feature); |
614623f393c6
Add FIXME to remember TLS compression detection.
Tobias Markmann <tm@ayena.de>
parents:
1671
diff
changeset
|
34 end |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
35 end |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
36 ); |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
37 |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
38 module:hook("s2s-stream-features", |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
39 function (data) |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
40 local session, features = data.session, data.features; |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
41 -- FIXME only advertise compression support when TLS layer has no compression enabled |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
42 features:add_child(compression_stream_feature); |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
43 end |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
44 ); |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
45 |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
46 -- S2Sout handling aka the client perspective in the S2S connection |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
47 module:hook_stanza(xmlns_stream, "features", |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
48 function (session, stanza) |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
49 if not session.compressed then |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
50 module:log("debug", "FEATURES: "..stanza:pretty_print()) |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
51 -- does remote server support compression? |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
52 local comp_st = stanza:child_with_name("compression"); |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
53 if comp_st then |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
54 -- do we support the mechanism |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
55 for a in comp_st:children() do |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
56 local algorithm = a[1] |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
57 if algorithm == "zlib" then |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
58 session.sends2s(st.stanza("compress", {xmlns=xmlns_compression_protocol}):text("zlib")) |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
59 session.log("info", "Enabled compression using zlib.") |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
60 return true; |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
61 end |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
62 end |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
63 session.log("debug", "Remote server supports no compression algorithm we support.") |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
64 end |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
65 end |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
66 end |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
67 , 250); |
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
68 |
1674
250bddde4162
Add a TODO for s2s compression support.
Tobias Markmann <tm@ayena.de>
parents:
1673
diff
changeset
|
69 -- TODO Support compression on S2S level too. |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
70 module:add_handler({"c2s_unauthed", "c2s", "s2sin_unauthed", "s2sin"}, "compress", xmlns_compression_protocol, |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
71 function(session, stanza) |
1719
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
72 -- fail if we are already compressed |
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
73 if session.compressed then |
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
74 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); |
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
75 session.send(error_st); |
2279 | 76 session.log("warn", "Tried to establish another compression layer."); |
1719
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
77 end |
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
78 |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
79 -- checking if the compression method is supported |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
80 local method = stanza:child_with_name("method")[1]; |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
81 if method == "zlib" then |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
82 session.log("info", method.." compression selected."); |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
83 (session.sends2s or session.send)(st.stanza("compressed", {xmlns=xmlns_compression_protocol})); |
1671
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
84 session:reset_stream(); |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
85 |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
86 -- create deflate and inflate streams |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
87 local status, deflate_stream = pcall(zlib.deflate, compression_level); |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
88 if status == false then |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
89 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
90 (session.sends2s or session.send)(error_st); |
2279 | 91 session.log("error", "Failed to create zlib.deflate filter."); |
1716
3f7fd1445d02
mod_compression: Fixed some undefined global accesses
Waqas Hussain <waqas20@gmail.com>
parents:
1679
diff
changeset
|
92 module:log("error", deflate_stream); |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
93 return |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
94 end |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
95 |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
96 local status, inflate_stream = pcall(zlib.inflate); |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
97 if status == false then |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
98 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
99 (session.sends2s or session.send)(error_st); |
2279 | 100 session.log("error", "Failed to create zlib.deflate filter."); |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
101 module:log("error", inflate_stream); |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
102 return |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
103 end |
1671
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
104 |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
105 -- setup compression for session.w |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
106 local old_send = session.send; |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
107 |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
108 session.send = function(t) |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
109 local status, compressed, eof = pcall(deflate_stream, tostring(t), 'sync'); |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
110 if status == false then |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
111 session:close({ |
1718
af3d0c329396
Support compression also after SASL.
Tobias Markmann <tm@ayena.de>
parents:
1716
diff
changeset
|
112 condition = "undefined-condition"; |
af3d0c329396
Support compression also after SASL.
Tobias Markmann <tm@ayena.de>
parents:
1716
diff
changeset
|
113 text = compressed; |
af3d0c329396
Support compression also after SASL.
Tobias Markmann <tm@ayena.de>
parents:
1716
diff
changeset
|
114 extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
115 }); |
1719
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
116 module:log("warn", compressed); |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
117 return; |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
118 end |
1671
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
119 old_send(compressed); |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
120 end; |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
121 |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
122 -- setup decompression for session.data |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
123 local function setup_decompression(session) |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
124 local old_data = session.data |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
125 session.data = function(conn, data) |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
126 local status, decompressed, eof = pcall(inflate_stream, data); |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
127 if status == false then |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
128 session:close({ |
1718
af3d0c329396
Support compression also after SASL.
Tobias Markmann <tm@ayena.de>
parents:
1716
diff
changeset
|
129 condition = "undefined-condition"; |
af3d0c329396
Support compression also after SASL.
Tobias Markmann <tm@ayena.de>
parents:
1716
diff
changeset
|
130 text = decompressed; |
af3d0c329396
Support compression also after SASL.
Tobias Markmann <tm@ayena.de>
parents:
1716
diff
changeset
|
131 extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
132 }); |
1719
cf103398e643
Don't allow double compression.
Tobias Markmann <tm@ayena.de>
parents:
1718
diff
changeset
|
133 module:log("warn", decompressed); |
1678
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
134 return; |
79eb903d0e67
Using pcall to make save the rest from zlib fails. Emit errors on those fails.
Tobias Markmann <tm@ayena.de>
parents:
1677
diff
changeset
|
135 end |
1671
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
136 old_data(conn, decompressed); |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
137 end; |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
138 end |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
139 setup_decompression(session); |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
140 |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
141 local session_reset_stream = session.reset_stream; |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
142 session.reset_stream = function(session) |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
143 session_reset_stream(session); |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
144 setup_decompression(session); |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
145 return true; |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
146 end; |
d196ac213104
Actually inject de- and compression into the reading/writing functions.
Tobias Markmann <tm@ayena.de>
parents:
1670
diff
changeset
|
147 session.compressed = true; |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
148 else |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
149 session.log("info", method.." compression selected. But we don't support it."); |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
150 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
151 (session.sends2s or session.send)(error_st); |
1669
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
152 end |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
153 end |
b8eec163a823
Commit initial version of mod_compression.
Tobias Markmann <tm@ayena.de>
parents:
diff
changeset
|
154 ); |
2280
0b0fe49e5251
Enable one way stream compression on s2s links.
Tobias Markmann <tm@ayena.de>
parents:
2279
diff
changeset
|
155 |