Software / code / prosody
Comparison
plugins/mod_compression.lua @ 2279:49bc4c7bdef8
Fixing some typos.
| author | Tobias Markmann <tm@ayena.de> |
|---|---|
| date | Fri, 20 Nov 2009 17:12:12 +0100 |
| parent | 1728:cb4c94b47d53 |
| child | 2280:0b0fe49e5251 |
| child | 2882:4e72048d4a24 |
comparison
equal
deleted
inserted
replaced
| 2090:7810648ea26d | 2279:49bc4c7bdef8 |
|---|---|
| 12 local xmlns_compression_feature = "http://jabber.org/features/compress" | 12 local xmlns_compression_feature = "http://jabber.org/features/compress" |
| 13 local xmlns_compression_protocol = "http://jabber.org/protocol/compress" | 13 local xmlns_compression_protocol = "http://jabber.org/protocol/compress" |
| 14 local compression_stream_feature = st.stanza("compression", {xmlns=xmlns_compression_feature}):tag("method"):text("zlib"):up(); | 14 local compression_stream_feature = st.stanza("compression", {xmlns=xmlns_compression_feature}):tag("method"):text("zlib"):up(); |
| 15 | 15 |
| 16 local compression_level = module:get_option("compression_level"); | 16 local compression_level = module:get_option("compression_level"); |
| 17 | |
| 18 -- if not defined assume admin wants best compression | 17 -- if not defined assume admin wants best compression |
| 19 if compression_level == nil then compression_level = 9 end; | 18 if compression_level == nil then compression_level = 9 end; |
| 19 | |
| 20 | 20 |
| 21 compression_level = tonumber(compression_level); | 21 compression_level = tonumber(compression_level); |
| 22 if not compression_level or compression_level < 1 or compression_level > 9 then | 22 if not compression_level or compression_level < 1 or compression_level > 9 then |
| 23 module:log("warn", "Invalid compression level in config: %s", tostring(compression_level)); | 23 module:log("warn", "Invalid compression level in config: %s", tostring(compression_level)); |
| 24 module:log("warn", "Module loading aborted. Compression won't be available."); | 24 module:log("warn", "Module loading aborted. Compression won't be available."); |
| 39 function(session, stanza) | 39 function(session, stanza) |
| 40 -- fail if we are already compressed | 40 -- fail if we are already compressed |
| 41 if session.compressed then | 41 if session.compressed then |
| 42 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); | 42 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); |
| 43 session.send(error_st); | 43 session.send(error_st); |
| 44 session:log("warn", "Tried to establish another compression layer."); | 44 session.log("warn", "Tried to establish another compression layer."); |
| 45 end | 45 end |
| 46 | 46 |
| 47 -- checking if the compression method is supported | 47 -- checking if the compression method is supported |
| 48 local method = stanza:child_with_name("method")[1]; | 48 local method = stanza:child_with_name("method")[1]; |
| 49 if method == "zlib" then | 49 if method == "zlib" then |
| 54 -- create deflate and inflate streams | 54 -- create deflate and inflate streams |
| 55 local status, deflate_stream = pcall(zlib.deflate, compression_level); | 55 local status, deflate_stream = pcall(zlib.deflate, compression_level); |
| 56 if status == false then | 56 if status == false then |
| 57 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); | 57 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); |
| 58 session.send(error_st); | 58 session.send(error_st); |
| 59 session:log("error", "Failed to create zlib.deflate filter."); | 59 session.log("error", "Failed to create zlib.deflate filter."); |
| 60 module:log("error", deflate_stream); | 60 module:log("error", deflate_stream); |
| 61 return | 61 return |
| 62 end | 62 end |
| 63 | 63 |
| 64 local status, inflate_stream = pcall(zlib.inflate); | 64 local status, inflate_stream = pcall(zlib.inflate); |
| 65 if status == false then | 65 if status == false then |
| 66 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); | 66 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); |
| 67 session.send(error_st); | 67 session.send(error_st); |
| 68 session:log("error", "Failed to create zlib.deflate filter."); | 68 session.log("error", "Failed to create zlib.deflate filter."); |
| 69 module:log("error", inflate_stream); | 69 module:log("error", inflate_stream); |
| 70 return | 70 return |
| 71 end | 71 end |
| 72 | 72 |
| 73 -- setup compression for session.w | 73 -- setup compression for session.w |