[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mailbox in .49b7



> Matti,
> 
> '-H' option in mailbox program (allow 8bit in headers) stopped working.
> Moreover, attemped QP encoding is incorrect: *any* 8bit character is
> converted to '=FF'!  Have to defer installing in on the main production
> relay...

	Propably character signedness problem.  A diff at the end.
	(I wonder if any others are lurking in the corners..)
	(mailbox, sm, and smtp programs are armoured ok, but I can't
	 quickly verify all of their libraries..)

> Also, noticed a strange thing: a few messages are stuck in the scheduler
> queue for smtp delivery, and mailq only shows them occationaly.  Here
> are 'mailq' commands run *immediately* one after one:
> 
> crosser@chronos:/src/zmailer/zmailer-2.99.49b7/$ mailq
> smtp/it.ru:
>         68047-25772:    (retry in 4s, expires in 2d22h, tries=1)
> crosser@chronos:/src/zmailer/zmailer-2.99.49b7/$ mailq
> smtp/nic.funet.fi:
>         68060-25772:    (retry in 52s, expires in 1d20h, tries=1)
> crosser@chronos:/src/zmailer/zmailer-2.99.49b7/$ mailq
> smtp/bm.com:
>         68058-25772:    (retry in 1m, expires in 1d20h, tries=1)
> smtp/nic.funet.fi:
>         68060-25772:    (retry in 46s, expires in 1d20h, tries=1)
> crosser@chronos:/src/zmailer/zmailer-2.99.49b7/$

	The  $LOGDIR/scheduler  -logfile does tell something.
	All queue dropouts are listed there.

> Eugene

	/Matti Aarnio <mea@nic.funet.fi>

--- transports/libta/mime2headers.c~	Fri May 23 01:17:15 1997
+++ transports/libta/mime2headers.c	Fri May 30 20:07:46 1997
@@ -251,12 +251,13 @@
 	      q += strlen(q);
 
 	      for ( ; *s && (*s != ' ' && *s != '\t' && *s != ')'); ++s) {
-		if (*s < ' '  || *s > 126  ||
-		    *s == '=' || *s == '?' || *s == '_') {
-		  sprintf(q,"=%02X",*s);
+		int c = (*s) & 0xFF;
+		if (c < ' '  || c > 126  ||
+		    c == '=' || c == '?' || c == '_') {
+		  sprintf(q, "=%02X", c);
 		  q += 3;
 		} else
-		  *q++ = *s;
+		  *q++ = c;
 	      }
 	      strcpy(q,"?="); q += 2;
 	      strcpy(q,(void*)s);