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:
Diffstat (limited to 'lib/gitlab/email/receiver.rb')
-rw-r--r--lib/gitlab/email/receiver.rb19
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb
index 0d6b08b5d29..d8c594ad0e7 100644
--- a/lib/gitlab/email/receiver.rb
+++ b/lib/gitlab/email/receiver.rb
@@ -13,8 +13,10 @@ module Gitlab
UserBlockedError = Class.new(ProcessingError)
UserNotAuthorizedError = Class.new(ProcessingError)
NoteableNotFoundError = Class.new(ProcessingError)
- InvalidNoteError = Class.new(ProcessingError)
- InvalidIssueError = Class.new(ProcessingError)
+ InvalidRecordError = Class.new(ProcessingError)
+ InvalidNoteError = Class.new(InvalidRecordError)
+ InvalidIssueError = Class.new(InvalidRecordError)
+ InvalidMergeRequestError = Class.new(InvalidRecordError)
UnknownIncomingEmail = Class.new(ProcessingError)
class Receiver
@@ -26,6 +28,9 @@ module Gitlab
raise EmptyEmailError if @raw.blank?
mail = build_mail
+
+ ignore_auto_submitted!(mail)
+
mail_key = extract_mail_key(mail)
handler = Handler.for(mail, mail_key)
@@ -87,6 +92,16 @@ module Gitlab
break key if key
end
end
+
+ def ignore_auto_submitted!(mail)
+ # Mail::Header#[] is case-insensitive
+ auto_submitted = mail.header['Auto-Submitted']&.value
+
+ # Mail::Field#value would strip leading and trailing whitespace
+ raise AutoGeneratedEmailError if
+ # See also https://tools.ietf.org/html/rfc3834
+ auto_submitted && auto_submitted != 'no'
+ end
end
end
end