send-email: clear the $message_id after validation

Recently git-send-email started parsing the same message twice, once
to validate _all_ the message before sending even the first one, and
then after the validation hook is happy and each message gets sent,
to read the contents to find out where to send to etc.

Unfortunately, the effect of reading the messages for validation
lingered even after the validation is done.  Namely $message_id gets
assigned if exists in the input files but the variable is global,
and it is not cleared before pre_process_file runs.  This causes
reading a message without a message-id followed by reading a message
with a message-id to misbehave---the sub reports as if the message
had the same id as the previously written one.

Clear the variable before starting to read the headers in
pre_process_file.

Tested-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2023-05-17 14:10:39 -07:00
parent a8022c5f7b
commit 3ece9bf0f9
2 changed files with 18 additions and 1 deletions

View File

@ -1768,6 +1768,8 @@ sub pre_process_file {
$subject = $initial_subject;
$message = "";
$message_num++;
undef $message_id;
# First unfold multiline header fields
while(<$fh>) {
last if /^\s*$/;