Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2017-01-17 22:50:49 +0300
committerLin Jen-Shin <godfat@godfat.org>2017-01-20 15:19:22 +0300
commitd15b7db1216f220b9f5af7e777cf04712483cbdf (patch)
tree697452bdb1490c95596a9b2419e62e2e2af7d28e /lib/gitlab/email
parent491f1375fc055805c623a3079a383de988689f3d (diff)
Fix References header parser for Microsoft Exchange
Microsoft Exchange would append a comma and another message id into the References header, therefore we'll need to fallback and parse the header by ourselves. Closes #26567
Diffstat (limited to 'lib/gitlab/email')
-rw-r--r--lib/gitlab/email/receiver.rb17
1 files changed, 16 insertions, 1 deletions
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb
index a40c44eb1bc..df9d1cae8da 100644
--- a/lib/gitlab/email/receiver.rb
+++ b/lib/gitlab/email/receiver.rb
@@ -35,6 +35,8 @@ module Gitlab
handler.execute
end
+ private
+
def build_mail
Mail::Message.new(@raw)
rescue Encoding::UndefinedConversionError,
@@ -54,7 +56,20 @@ module Gitlab
end
def key_from_additional_headers(mail)
- Array(mail.references).find do |mail_id|
+ find_key_from_references(ensure_references_array(mail.references))
+ end
+
+ def ensure_references_array(references)
+ case references
+ when Array
+ references
+ when String # Handle emails from Microsoft exchange which uses commas
+ Gitlab::IncomingEmail.scan_fallback_references(references)
+ end
+ end
+
+ def find_key_from_references(references)
+ references.find do |mail_id|
key = Gitlab::IncomingEmail.key_from_fallback_message_id(mail_id)
break key if key
end