[comp.bugs.4bsd] Bug in sendmail.

sow@cad.luth.se (Sven-Ove Westberg) (10/06/87)

Description:
	Sendmail can't write a ~/dead.letters if the path
	to the users home directory contains upper case letters.

Fix:
	If the address is ~/dead.letter don't convert the
	address to lower case.


Sven-Ove Westberg, CAD, University of Lulea, S-951 87 Lulea, Sweden.
Tel:     +46-920-91677  (work)                 +46-920-48390  (home)
Internet: sow@cad.luth.se


*** /tmp/geta7344	Sun Oct  4 20:09:14 1987
--- /tmp/savemail.c	Sun Oct  4 20:09:15 1987
***************
*** 45,50 ****
--- 45,51 ----
  # define ESM_PANIC	6	/* leave the locked queue/transcript files */
  # define ESM_DONE	7	/* the message is successfully delivered */
  
+ bool	WriteDeadLetter;
  
  savemail(e)
  	register ENVELOPE *e;
***************
*** 280,290 ****
--- 281,293 ----
  				Verbose = oldverb;
  				e->e_to = buf;
  				q = NULL;
+ 				WriteDeadLetter = TRUE;
  				sendtolist(buf, (ADDRESS *) NULL, &q);
  				if (deliver(e, q) == 0)
  					state = ESM_DONE;
  				else
  					state = ESM_MAIL;
+ 				WriteDeadLetter = FALSE;
  			}
  			else
  			{
*** /tmp/geta7357	Sun Oct  4 20:10:18 1987
--- /tmp/recipient.c	Sun Oct  4 20:10:19 1987
***************
*** 178,185 ****
  	/* set the queue timeout */
  	a->q_timeout = TimeOut;
  
! 	/* map user & host to lower case if requested on non-aliases */
! 	if (a->q_alias == NULL)
  		loweraddr(a);
  
  	/* get unquoted user for file, program or user.name check */
--- 178,189 ----
  	/* set the queue timeout */
  	a->q_timeout = TimeOut;
  
! 	/*
! 	** map user & host to lower case if requested on non-aliases
! 	** don't map if this is ~/dead.letter
! 	*/
! 
! 	if (a->q_alias == NULL && !WriteDeadLetter)
  		loweraddr(a);
  
  	/* get unquoted user for file, program or user.name check */
*** /tmp/geta7369	Sun Oct  4 20:10:53 1987
--- /tmp/sendmail.h	Sun Oct  4 20:10:53 1987
***************
*** 590,595 ****
--- 590,596 ----
  #ifdef NDBM
  EXTERN struct dbm_table DbmTab[128];	/* keyed database table */
  #endif NDBM
+ EXTERN bool	WriteDeadLetter;	/* Writing a dead letter */
  /*
  **  Trace information
  */