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

more or less acceptable patch for smtp.c



Hi,

	This is more or less acceptable solution for the bug I have
mentioned before. Although I think some safeguard has to be put into
scheduler/threads.c:pick_next_vertex
								alexis

*** smtp.c	1997/08/22 12:22:27	1.1
--- smtp.c	1997/08/22 15:13:08
***************
*** 572,577 ****
--- 572,578 ----
  	char *channel = NULL, *host = NULL;
  	int i, fd, errflg, c, smtpstatus;
  	int need_host = 0;
+ 	int skip_host = 0;
  	int idle;
  	int noMX = 0;
  	SmtpState SS;
***************
*** 808,814 ****
  #if !(defined(HAVE_MMAP) && defined(TA_USE_MMAP))
  	  readalready = 0; /* internal body read buffer 'flush' */
  #endif
! 	  idle = 0;
  	  if (strchr(file, '\n') == NULL) break; /* No ending '\n' !  Must
  						    have been partial input! */
  	  if (logfp) {
--- 809,815 ----
  #if !(defined(HAVE_MMAP) && defined(TA_USE_MMAP))
  	  readalready = 0; /* internal body read buffer 'flush' */
  #endif
! 	  idle = 0; skip_host = 0;
  	  if (strchr(file, '\n') == NULL) break; /* No ending '\n' !  Must
  						    have been partial input! */
  	  if (logfp) {
***************
*** 836,842 ****
  		if (logfp && verbosity > 1) {
  		  fprintf(logfp,"%s#\t(too soon trying to touch on host with 'retryat' diagnostic -- flushing job queue..host='%s')\n",logtag(),host);
  		}
! 		continue;
  	      }
  	    }
  
--- 837,843 ----
  		if (logfp && verbosity > 1) {
  		  fprintf(logfp,"%s#\t(too soon trying to touch on host with 'retryat' diagnostic -- flushing job queue..host='%s')\n",logtag(),host);
  		}
! 		++skip_host;
  	      }
  	    }
  
***************
*** 904,910 ****
  	    if ((first_uid = atoi(dp->senders->misc)) < 0 ||
  		first_uid == nobody)
  	      first_uid = daemon_uid;
! 	    smtpstatus = smtpopen(&SS, smtphost, noMX);
  	    if (smtpstatus != EX_OK) {
  	      /* SMTPOPEN() made diagnostics data -- we report.. */
  	      struct rcpt *rp;
--- 905,912 ----
  	    if ((first_uid = atoi(dp->senders->misc)) < 0 ||
  		first_uid == nobody)
  	      first_uid = daemon_uid;
! 	    if(!skip_host)
! 		smtpstatus = smtpopen(&SS, smtphost, noMX);
  	    if (smtpstatus != EX_OK) {
  	      /* SMTPOPEN() made diagnostics data -- we report.. */
  	      struct rcpt *rp;
-- 
	 	Don't question why she needs to be so free...