Package: exim4
Severity: minor
Version: 4.69-11
Tags: patch
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu ubuntu-patch

exiqgrep might return a "Line mismatch" error:

# exiqgrep -x
Line mismatch: 42h 1JCb3k-0007bY-P1 <addr-removed-for-priv...@home.nl>

This happens when "exim4 -bp" (mailq) reports lines without size info.

The attached patch was included in Ubuntu's exim4 [1]. You might
consider including it in Debian as well.

[1] https://bugs.launchpad.net/ubuntu/+source/exim4/+bug/181948

Regards,

-- 
Thierry Carrez

diff -u exim4-4.69/debian/patches/00list exim4-4.69/debian/patches/00list
--- exim4-4.69/debian/patches/00list
+++ exim4-4.69/debian/patches/00list
@@ -14,0 +15 @@
+71_exiq_grep_error_on_messages_without_size.dpatch
only in patch2:
unchanged:
--- exim4-4.69.orig/debian/patches/71_exiq_grep_error_on_messages_without_size.dpatch
+++ exim4-4.69/debian/patches/71_exiq_grep_error_on_messages_without_size.dpatch
@@ -0,0 +1,37 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 71_exiq_grep_error_on_messages_without_size.dpatch
+##
+## DP: https://bugs.edge.launchpad.net/ubuntu/+source/exim4/+bug/181948
+## DP: Patch from Daniel van Eeden
+
+...@dpatch@
+--- experimental~/build-tree//src/exiqgrep.src
++++ experimental/build-tree//src/exiqgrep.src
+@@ -106,7 +106,26 @@
+ 			# Increment message counter.
+ 			$count++;
+ 		} else {
+-			print STDERR "Line mismatch: $line\n"; exit 1;
++                       if ($line =~ /^\s*(\w+)\s+(\w{6}-\w{6}-\w{2})\s+(<.*?>)/) {
++                               my $msg = $2;
++                               $id{$msg}{age} = $1;
++                               $id{$msg}{size} = "0K";
++                               $id{$msg}{from} = $3;
++                               $id{$msg}{birth} = &msg_utc($msg);
++                               $id{$msg}{ages} = time - $id{$msg}{birth};
++                               if ($line =~ /\*\*\* frozen \*\*\*$/) {
++                                       $id{$msg}{frozen} = 1;
++                               } else {
++                                       $id{$msg}{frozen} = 0;
++                               }
++                               while(<QUEUE> =~ /\s+(....@.*)$/) {
++                                       push(@{$id{$msg}{rcpt}},$1);
++                               }
++                               # Increment message counter.
++                               $count++;
++                       } else { 
++                               print STDERR "Line mismatch: $line\n"; exit 1;
++                       }
+ 		}
+ 	}
+ 	close(QUEUE) or die("Error closing pipe: $!\n");

Reply via email to