Dear release team, dear sponsors I have made a patch which would solve bug for Debian Squeeze as the Sid version did not made it into testing in time. As I'm not familiar with doing such a thing I am asking for some help in order to make a NMU to Debian t-p-u. Please find attached a debdiff sendmail_8.14.3-9.4.dsc sendmail_8.14.3-9.5.dsc which shows the changes done by me based on the patches in the according bug report http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=527862 and the new upstream version 8.14.4. If this change is acceptable to the release team I would ask for some help with getting it into t-p-u.
Thanks for everybodies help! Kind regards Harald Jenny
diff -u sendmail-8.14.3/debian/changelog sendmail-8.14.3/debian/changelog --- sendmail-8.14.3/debian/changelog +++ sendmail-8.14.3/debian/changelog @@ -1,3 +1,11 @@ +sendmail (8.14.3-9.5) testing-proposed-updates; urgency=medium + + * Non-maintainer upload. + * Apply patch from sendmail 8.14.4 to fix libmilter bug in upcoming Squeeze + release (Closes: #527862). + + -- Harald Jenny <har...@a-little-linux-box.at> Sun, 2 Jan 2011 22:36:17 +0100 + sendmail (8.14.3-9.4) unstable; urgency=low * Non-maintainer upload. diff -u sendmail-8.14.3/debian/patches/8.14/8.14.3/series sendmail-8.14.3/debian/patches/8.14/8.14.3/series --- sendmail-8.14.3/debian/patches/8.14/8.14.3/series +++ sendmail-8.14.3/debian/patches/8.14/8.14.3/series @@ -12,0 +13 @@ +worker_c only in patch2: unchanged: --- sendmail-8.14.3.orig/debian/patches/8.14/8.14.3/worker_c +++ sendmail-8.14.3/debian/patches/8.14/8.14.3/worker_c @@ -0,0 +1,73 @@ +--- sendmail-8.14.3/libmilter/worker.c 2007-12-03 23:06:05.000000000 +0100 ++++ sendmail-8.14.4/libmilter/worker.c 2009-06-15 17:34:54.000000000 +0200 +@@ -328,6 +312,7 @@ + int dim_pfd = 0; + bool rebuild_set = true; + int pcnt = 0; /* error count for poll() failures */ ++ time_t lastcheck; + + Tskmgr.tm_tid = sthread_get_id(); + if (pthread_detach(Tskmgr.tm_tid) != 0) +@@ -345,12 +330,12 @@ + } + dim_pfd = PFD_STEP; + ++ lastcheck = time(NULL); + for (;;) + { + SMFICTX_PTR ctx; + int nfd, rfd, i; + time_t now; +- time_t lastcheck; + + POOL_LEV_DPRINTF(4, ("Let's %s again...", WAITFN)); + +@@ -364,20 +349,20 @@ + /* check for timed out sessions? */ + if (lastcheck + DT_CHECK_OLD_SESSIONS < now) + { +- SM_TAILQ_FOREACH(ctx, &WRK_CTX_HEAD, ctx_link) ++ ctx = SM_TAILQ_FIRST(&WRK_CTX_HEAD); ++ while (ctx != SM_TAILQ_END(&WRK_CTX_HEAD)) + { ++ SMFICTX_PTR ctx_nxt; ++ ++ ctx_nxt = SM_TAILQ_NEXT(ctx, ctx_link); + if (ctx->ctx_wstate == WKST_WAITING) + { + if (ctx->ctx_wait == 0) +- { + ctx->ctx_wait = now; +- continue; +- } +- +- /* if session timed out, close it */ +- if (ctx->ctx_wait + OLD_SESSION_TIMEOUT +- < now) ++ else if (ctx->ctx_wait + OLD_SESSION_TIMEOUT ++ < now) + { ++ /* if session timed out, close it */ + sfsistat (*fi_close) __P((SMFICTX *)); + + POOL_LEV_DPRINTF(4, +@@ -389,10 +374,9 @@ + (void) (*fi_close)(ctx); + + mi_close_session(ctx); +- ctx = SM_TAILQ_FIRST(&WRK_CTX_HEAD); +- continue; + } + } ++ ctx = ctx_nxt; + } + lastcheck = now; + } +@@ -465,6 +449,7 @@ + } + } + } ++ rebuild_set = false; + } + + TASKMGR_UNLOCK();