From 1fbb090ea91ab20916b3698d8afd6e300673b826 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Thu, 9 Jun 2011 12:29:07 +0200 Subject: [PATCH] Mark threaded mapped messages as replied This prevents them from being delegated to unreplied() before the processing thread has the chance to mark it replied. The solution would fail for threaded messages whose processing would not reply, but I'm not aware of such a method currently exists. A future design of the message delegation and mapping could thread the actual delegation instead, and this problem would be solved. --- lib/rbot/messagemapper.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/rbot/messagemapper.rb b/lib/rbot/messagemapper.rb index c222ee71..d85f0b14 100644 --- a/lib/rbot/messagemapper.rb +++ b/lib/rbot/messagemapper.rb @@ -259,6 +259,12 @@ class Bot if m.bot.auth.allow?(auth, m.source, m.replyto) debug "template match found and auth'd: #{action.inspect} #{options.inspect}" if !m.in_thread && (tmpl.options[:thread] || tmpl.options[:threaded]) + # since the message action is in a separate thread, the message may be + # delegated to unreplied() before the thread has a chance to actually + # mark it as replied. since threading is used mostly for commands that + # are known to take some processing time (e.g. download a web page) before + # giving an output, we just mark these as 'replied' here + m.replied = true Thread.new do begin @parent.send(action, m, options) -- 2.39.2