On Sat, Dec 11, 2010 at 04:11:47PM +0200, Peter Pentchev wrote:
> Package: release.debian.org
> Severity: normal
> User: [email protected]
> Usertags: unblock
> 
> Hi,
> 
> Thanks for your efforts on cutting great Debian releases!
> 
> I've made some changes (debdiff attached) to the dma package which
> I haven't uploaded to unstable yet; do you think they are suitable
> for a unstable -> testing migration during the freeze, or should I
> upload to experimental instead, or just wait?
> 
> The first change is a fix for #606398 - now dma provides the
> /usr/lib/sendmail symlink so some MUA's can actually, well, send
> mail.  IMHO this is a usability improvement, although only for a
> small portion of the MUA's.
> 
> The second change is a fix for a segfault if dma cannot resolve any
> of the MX's it tries to deliver to.  This does not have any really
> bad consequences - the message is still in the queue and dma will
> retry the delivery in a while - but it is kind of annoying to have
> segfaults show up in your syslog just because a VPN is down :)

Actually, after a bit of communication with the upstream developer,
I decided that it would be better to use his version of the fix for
the DNS MX trouble.  Attached is a debdiff that replaces my patch
with his change, committed to his Gitorious repo.

> So - what's your call?  Should I upload to unstable with a freeze
> exception in mind, or should these fixes wait for the Squeeze
> release?

G'luck,
Peter

-- 
Peter Pentchev  [email protected]    [email protected]    [email protected]
PGP key:        http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
This sentence was in the past tense.
diffstat for dma-0.0.2010.06.17 dma-0.0.2010.06.17

 changelog                        |    9 ++++
 dma.links                        |    1 
 patches/38-unresolvable-mx.patch |   87 +++++++++++++++++++++++++++++++++++++++
 patches/series                   |    1 
 4 files changed, 98 insertions(+)

diff -Nru dma-0.0.2010.06.17/debian/changelog 
dma-0.0.2010.06.17/debian/changelog
--- dma-0.0.2010.06.17/debian/changelog 2010-10-17 00:08:38.000000000 +0300
+++ dma-0.0.2010.06.17/debian/changelog 2010-12-13 12:58:57.000000000 +0200
@@ -1,3 +1,12 @@
+dma (0.0.2010.06.17-7) unstable; urgency=low
+
+  * Provide the /usr/lib/sendmail symlink.  Closes: #606398
+  * Add the 38-unresolvable-mx patch to fix a segfault when
+    dma is unable to, well, resolve either the provided smarthost or
+    any of the mail exchangers for the recipient domain.
+
+ -- Peter Pentchev <[email protected]>  Mon, 13 Dec 2010 12:58:54 +0200
+
 dma (0.0.2010.06.17-6) unstable; urgency=low
 
   * Add the 37-gnu-hurd patch to really fix the FTBFS on GNU/Hurd.
diff -Nru dma-0.0.2010.06.17/debian/dma.links 
dma-0.0.2010.06.17/debian/dma.links
--- dma-0.0.2010.06.17/debian/dma.links 2009-12-09 20:27:05.000000000 +0200
+++ dma-0.0.2010.06.17/debian/dma.links 2010-12-11 15:19:23.000000000 +0200
@@ -1,5 +1,6 @@
 usr/sbin/dma usr/bin/mailq
 usr/sbin/dma usr/bin/newaliases
+usr/sbin/dma usr/lib/sendmail
 usr/sbin/dma usr/sbin/sendmail
 usr/share/man/man8/dma.8 usr/share/man/man8/mailq.8
 usr/share/man/man8/dma.8 usr/share/man/man8/newaliases.8
diff -Nru dma-0.0.2010.06.17/debian/patches/38-unresolvable-mx.patch 
dma-0.0.2010.06.17/debian/patches/38-unresolvable-mx.patch
--- dma-0.0.2010.06.17/debian/patches/38-unresolvable-mx.patch  1970-01-01 
02:00:00.000000000 +0200
+++ dma-0.0.2010.06.17/debian/patches/38-unresolvable-mx.patch  2010-12-13 
12:42:42.000000000 +0200
@@ -0,0 +1,87 @@
+Description: Fix a segfault upon unresolvable MX's.
+ This fixes both the case when the configured smarthost is unresolvable
+ and the case when a smarthost is not used but *all* of the MX's for
+ the recipient domain are unresolvable.
+Origin: upstream; 
http://gitorious.org/~corecode/dma/corecodes-dma/commit/4b26e6a7
+Author: Simon 'corecode' Schubert <[email protected]>
+Last-Update: 2010-12-13
+
+--- a/dns.c
++++ b/dns.c
+@@ -80,7 +80,7 @@
+       snprintf(servname, sizeof(servname), "%d", port);
+       err = getaddrinfo(host, servname, &hints, &res0);
+       if (err)
+-              return (-1);
++              return (err == EAI_AGAIN ? 1 : -1);
+ 
+       for (res = res0; res != NULL; res = res->ai_next) {
+               if (*ps + 1 >= roundup(*ps, count_inc)) {
+@@ -110,7 +110,7 @@
+ out:
+       if (res0 != NULL)
+               freeaddrinfo(res0);
+-      return (-1);
++      return (1);
+ }
+ 
+ int
+@@ -127,6 +127,7 @@
+       size_t anssz;
+       int pref;
+       int cname_recurse;
++      int have_mx = 0;
+       int err;
+       int i;
+ 
+@@ -183,6 +184,7 @@
+ 
+               switch (ns_rr_type(rr)) {
+               case ns_t_mx:
++                      have_mx = 1;
+                       pref = ns_get16(cp);
+                       cp += 2;
+                       err = ns_name_uncompress(ns_msg_base(msg), 
ns_msg_end(msg),
+@@ -190,7 +192,9 @@
+                       if (err < 0)
+                               goto transerr;
+ 
+-                      add_host(pref, outname, port, &hosts, &nhosts);
++                      err = add_host(pref, outname, port, &hosts, &nhosts);
++                      if (err == -1)
++                              goto err;
+                       break;
+ 
+               case ns_t_cname:
+@@ -225,17 +229,23 @@
+ 
+       free(ans);
+ 
+-      if (!err) {
+-              /*
+-               * If we didn't find any MX, use the hostname instead.
+-               */
+-              if (nhosts == 0)
+-                      add_host(0, searchhost, port, &hosts, &nhosts);
+-
+-              qsort(hosts, nhosts, sizeof(*hosts), sort_pref);
++      if (err == 0) {
++              if (!have_mx) {
++                      /*
++                       * If we didn't find any MX, use the hostname instead.
++                       */
++                      err = add_host(0, host, port, &hosts, &nhosts);
++              } else if (nhosts == 0) {
++                      /*
++                       * We did get MX, but couldn't resolve any of them
++                       * due to transient errors.
++                       */
++                      err = 1;
++              }
+       }
+ 
+       if (nhosts > 0) {
++              qsort(hosts, nhosts, sizeof(*hosts), sort_pref);
+               /* terminate list */
+               *hosts[nhosts].host = 0;
+       } else {
diff -Nru dma-0.0.2010.06.17/debian/patches/series 
dma-0.0.2010.06.17/debian/patches/series
--- dma-0.0.2010.06.17/debian/patches/series    2010-10-16 18:54:13.000000000 
+0300
+++ dma-0.0.2010.06.17/debian/patches/series    2010-12-11 15:19:23.000000000 
+0200
@@ -20,3 +20,4 @@
 35-delivery-retry.patch
 36-sa_nocldwait.patch
 37-gnu-hurd.patch
+38-unresolvable-mx.patch

Attachment: signature.asc
Description: Digital signature

Reply via email to