Software / code / prosody
Comparison
plugins/mod_compression.lua @ 2882:4e72048d4a24
mod_compression: Fixed various possible tracebacks in logging.
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Tue, 09 Mar 2010 17:43:18 +0500 |
| parent | 2874:54c8b3952786 |
| child | 2883:adbca5af8536 |
comparison
equal
deleted
inserted
replaced
| 2877:1edeb8fe7d14 | 2882:4e72048d4a24 |
|---|---|
| 6 -- | 6 -- |
| 7 | 7 |
| 8 local st = require "util.stanza"; | 8 local st = require "util.stanza"; |
| 9 local zlib = require "zlib"; | 9 local zlib = require "zlib"; |
| 10 local pcall = pcall; | 10 local pcall = pcall; |
| 11 local tostring = tostring; | |
| 11 | 12 |
| 12 local xmlns_compression_feature = "http://jabber.org/features/compress" | 13 local xmlns_compression_feature = "http://jabber.org/features/compress" |
| 13 local xmlns_compression_protocol = "http://jabber.org/protocol/compress" | 14 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(); | 15 local compression_stream_feature = st.stanza("compression", {xmlns=xmlns_compression_feature}):tag("method"):text("zlib"):up(); |
| 15 | 16 |
| 55 local status, deflate_stream = pcall(zlib.deflate, compression_level); | 56 local status, deflate_stream = pcall(zlib.deflate, compression_level); |
| 56 if status == false then | 57 if status == false then |
| 57 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); | 58 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); |
| 58 session.send(error_st); | 59 session.send(error_st); |
| 59 session.log("error", "Failed to create zlib.deflate filter."); | 60 session.log("error", "Failed to create zlib.deflate filter."); |
| 60 module:log("error", deflate_stream); | 61 module:log("error", "%s", tostring(deflate_stream)); |
| 61 return | 62 return |
| 62 end | 63 end |
| 63 | 64 |
| 64 local status, inflate_stream = pcall(zlib.inflate); | 65 local status, inflate_stream = pcall(zlib.inflate); |
| 65 if status == false then | 66 if status == false then |
| 66 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); | 67 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); |
| 67 session.send(error_st); | 68 session.send(error_st); |
| 68 session.log("error", "Failed to create zlib.deflate filter."); | 69 session.log("error", "Failed to create zlib.inflate filter."); |
| 69 module:log("error", inflate_stream); | 70 module:log("error", "%s", tostring(inflate_stream)); |
| 70 return | 71 return |
| 71 end | 72 end |
| 72 | 73 |
| 73 -- setup compression for session.w | 74 -- setup compression for session.w |
| 74 local old_send = session.send; | 75 local old_send = session.send; |
| 79 session:close({ | 80 session:close({ |
| 80 condition = "undefined-condition"; | 81 condition = "undefined-condition"; |
| 81 text = compressed; | 82 text = compressed; |
| 82 extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); | 83 extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); |
| 83 }); | 84 }); |
| 84 module:log("warn", compressed); | 85 module:log("warn", "%s", tostring(compressed)); |
| 85 return; | 86 return; |
| 86 end | 87 end |
| 87 old_send(compressed); | 88 old_send(compressed); |
| 88 end; | 89 end; |
| 89 | 90 |
| 96 session:close({ | 97 session:close({ |
| 97 condition = "undefined-condition"; | 98 condition = "undefined-condition"; |
| 98 text = decompressed; | 99 text = decompressed; |
| 99 extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); | 100 extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); |
| 100 }); | 101 }); |
| 101 module:log("warn", decompressed); | 102 module:log("warn", "%s", tostring(decompressed)); |
| 102 return; | 103 return; |
| 103 end | 104 end |
| 104 old_data(conn, decompressed); | 105 old_data(conn, decompressed); |
| 105 end; | 106 end; |
| 106 end | 107 end |
| 112 setup_decompression(session); | 113 setup_decompression(session); |
| 113 return true; | 114 return true; |
| 114 end; | 115 end; |
| 115 session.compressed = true; | 116 session.compressed = true; |
| 116 else | 117 else |
| 117 session.log("info", method.." compression selected. But we don't support it."); | 118 session.log("info", "%s compression selected, but we don't support it.", tostring(method)); |
| 118 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); | 119 local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); |
| 119 session.send(error_st); | 120 session.send(error_st); |
| 120 end | 121 end |
| 121 end | 122 end |
| 122 ); | 123 ); |