aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/info_request.rb18
-rw-r--r--app/models/request_mailer.rb6
2 files changed, 24 insertions, 0 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index a32aff1fb..7cee3fe1c 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -324,6 +324,23 @@ public
end
end
+ # Has this email already been received here? Based just on message id.
+ def already_received?(email, raw_email_data)
+ message_id = email.message_id
+ if message_id.nil?
+ raise "No message id for this message"
+ end
+
+ for im in self.incoming_messages
+ other_message_id = im.mail.message_id
+ if message_id == other_message_id
+ return true
+ end
+ end
+
+ return false
+ end
+
# A new incoming email to this request
def receive(email, raw_email_data, override_stop_new_responses = false)
if !override_stop_new_responses
@@ -388,6 +405,7 @@ public
RequestMailer.deliver_new_response(self, incoming_message)
end
+
# An annotation (comment) is made
def add_comment(body, user)
comment = Comment.new
diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb
index 0d55d1d96..1bebb5181 100644
--- a/app/models/request_mailer.rb
+++ b/app/models/request_mailer.rb
@@ -192,6 +192,12 @@ class RequestMailer < ApplicationMailer
# Send the message to each request, to be archived with it
for reply_info_request in reply_info_requests
+ # If environment variable STOP_DUPLICATES is set, don't send message with same id again
+ if ENV['STOP_DUPLICATES']
+ if reply_info_request.already_received?(email, raw_email)
+ raise "message " + email.message_id + " already received by request"
+ end
+ end
reply_info_request.receive(email, raw_email)
end
end