String: make re timeout configurable.

Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
This commit is contained in:
Daniel Folkinshteyn 2010-08-08 01:43:05 -04:00 committed by James McCoy
parent 9fc7ec28b4
commit 34e5aedc45
2 changed files with 9 additions and 1 deletions

View File

@ -50,5 +50,12 @@ conf.registerGlobalValue(String.levenshtein, 'max',
and more time. Using nested commands, strings can get quite large, hence
this variable, to limit the size of arguments passed to the levenshtein
command."""))
conf.registerGroup(String, 're')
conf.registerGlobalValue(String.re, 'timeout',
registry.PositiveFloat(5, """Determines the maximum time, in seconds, that
a regular expression is given to execute before being terminated. Since
there is a possibility that user input for the re command can cause it to
eat up large amounts of ram or cpu time, it's a good idea to keep this
low. Most normal regexps should not take very long at all."""))
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:

View File

@ -141,7 +141,8 @@ class String(callbacks.Plugin):
s = 'You probably don\'t want to match the empty string.'
irc.error(s)
else:
v = commands.process(f, text, timeout=10, pn=self.name(), cn='re')
t = self.registryValue('re.timeout')
v = commands.process(f, text, timeout=t, pn=self.name(), cn='re')
irc.reply(v)
re = thread(wrap(re, [first('regexpMatcher', 'regexpReplacer'),
'text']))