summaryrefslogtreecommitdiff
path: root/lib/gitlab/email
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2017-02-06 19:33:21 +0000
committerSean McGivern <sean@mcgivern.me.uk>2017-02-06 19:33:21 +0000
commite6f5177b75e5b5bdd2ab56da88d546f90ee1e080 (patch)
tree1f0a9c3c6985a957948172096d2e90cb4e61bc6e /lib/gitlab/email
parentc25ac43276a2787152f2194a845f695c628a03d3 (diff)
parentbec10d5852a8820de4002af25dd7fbb705561718 (diff)
downloadgitlab-ce-e6f5177b75e5b5bdd2ab56da88d546f90ee1e080.tar.gz
Merge branch 'fix-references-header-parsing' into 'master'
Fix References header parser for Microsoft Exchange Closes #26567 See merge request !8620
Diffstat (limited to 'lib/gitlab/email')
-rw-r--r--lib/gitlab/email/receiver.rb21
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb
index a40c44eb1bc..b64db5d01ae 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,24 @@ module Gitlab
end
def key_from_additional_headers(mail)
- Array(mail.references).find do |mail_id|
+ references = ensure_references_array(mail.references)
+
+ find_key_from_references(references)
+ end
+
+ def ensure_references_array(references)
+ case references
+ when Array
+ references
+ when String
+ # Handle emails from clients which append with commas,
+ # example clients are Microsoft exchange and iOS app
+ 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