Project

General

Profile

Actions

Defect #30455

closed

Adding an issue note via email fails due to NoMethodError

Added by Go MAEDA almost 6 years ago. Updated almost 6 years ago.

Status:
Closed
Priority:
Normal
Category:
Email receiving
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed
Affected version:

Description

After upgrading my production Redmine to 4.0.0, I encountered a critical problem that I cannot add issue notes by replying emails.

On investigation, it turned out that NoMethodError that is raised at source:tags/4.0.0/app/models/mail_handler.rb#L240 causes the problem.

     # ignore CLI-supplied defaults for new issues
     handler_options[:issue].clear

The code expects that the class of handler_options[:issue] is Hash, however, it is actually ActionController::Parameters. Since the class does not have a "clear" method, the code raises exception and Redmine fails to add the email to the issue note.

The error cannot be detected by running the unit test because the class of handler_options[:issue] is not ActionController::Parameters but Hash in a test environment.

The following is a workaround for this issue.

Index: app/models/mail_handler.rb
===================================================================
--- app/models/mail_handler.rb    (revision 17805)
+++ app/models/mail_handler.rb    (working copy)
@@ -237,7 +237,7 @@
     end

     # ignore CLI-supplied defaults for new issues
-    handler_options[:issue].clear
+    handler_options[:issue] = {}

     journal = issue.init_journal(user)
     if from_journal && from_journal.private_notes?

Files

30455-fix.diff (1.22 KB) 30455-fix.diff Go MAEDA, 2019-01-17 12:49
30455-fix-v2.diff (1.28 KB) 30455-fix-v2.diff Go MAEDA, 2019-01-17 13:29
Actions

Also available in: Atom PDF