diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-02-06 22:33:21 +0300 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-02-06 22:33:21 +0300 |
commit | e6f5177b75e5b5bdd2ab56da88d546f90ee1e080 (patch) | |
tree | 1f0a9c3c6985a957948172096d2e90cb4e61bc6e /lib/gitlab/email | |
parent | c25ac43276a2787152f2194a845f695c628a03d3 (diff) | |
parent | bec10d5852a8820de4002af25dd7fbb705561718 (diff) |
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.rb | 21 |
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 |