Mercurial > prosody-modules
comparison mod_pastebin/mod_pastebin.lua @ 3031:040eaa3844f4
mod_pastebin: Check line length via preconstructed pattern instead of gsub
Optimization on the theory that this check scales with the configuration
option instead of with the size of the user-supplied message
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 20 May 2018 17:55:53 +0200 |
| parents | 4a7f08fe793c |
| children | 0f2dd6397569 |
comparison
equal
deleted
inserted
replaced
| 3030:4a7f08fe793c | 3031:040eaa3844f4 |
|---|---|
| 87 if not once then | 87 if not once then |
| 88 s:add_child(replacement); | 88 s:add_child(replacement); |
| 89 end | 89 end |
| 90 end | 90 end |
| 91 | 91 |
| 92 local line_count_pattern = string.rep("[^\n]\n", line_threshold):sub(1, -2); | |
| 93 | |
| 92 function check_message(data) | 94 function check_message(data) |
| 93 local origin, stanza = data.origin, data.stanza; | 95 local origin, stanza = data.origin, data.stanza; |
| 94 | 96 |
| 95 -- Only check for MUC presence when loaded on a component. | 97 -- Only check for MUC presence when loaded on a component. |
| 96 if is_component then | 98 if is_component then |
| 107 | 109 |
| 108 --module:log("debug", "Body(%s) length: %d", type(body), #(body or "")); | 110 --module:log("debug", "Body(%s) length: %d", type(body), #(body or "")); |
| 109 | 111 |
| 110 if ( #body > length_threshold and utf8_length(body) > length_threshold ) or | 112 if ( #body > length_threshold and utf8_length(body) > length_threshold ) or |
| 111 (trigger_string and body:find(trigger_string, 1, true) == 1) or | 113 (trigger_string and body:find(trigger_string, 1, true) == 1) or |
| 112 (select(2, body:gsub("\n", "%0")) >= line_threshold) | 114 body:find(line_count_pattern) then |
| 113 then | |
| 114 if trigger_string and body:sub(1, #trigger_string) == trigger_string then | 115 if trigger_string and body:sub(1, #trigger_string) == trigger_string then |
| 115 body = body:sub(#trigger_string+1); | 116 body = body:sub(#trigger_string+1); |
| 116 end | 117 end |
| 117 local url = pastebin_text(body); | 118 local url = pastebin_text(body); |
| 118 module:log("debug", "Pasted message as %s", url); | 119 module:log("debug", "Pasted message as %s", url); |
