From e3f2b2bbbb90e0bab87623a67faa0713b93b6cae Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Tue, 10 Jun 2025 09:43:36 -0400 Subject: [PATCH] Checking timeout condition on connect --- lib/geseml.c | 12 ++++++++---- lib/lvleml.c | 18 ++++++++++++++++++ lib/unieml.h | 1 + 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lib/geseml.c b/lib/geseml.c index 589366a..d33729c 100644 --- a/lib/geseml.c +++ b/lib/geseml.c @@ -698,20 +698,24 @@ switch (fork()) { case 0 : //the forked process char *execpath; char *argv[10]; + char dbgstr[10]; char buffer[300]; (void) memset(argv,'\000',sizeof(argv)); + (void) snprintf(dbgstr,sizeof(dbgstr),"%d",debug); (void) snprintf(buffer,sizeof(buffer),"%s%s",SBINDIR,SENDER); execpath=rou_apppath(buffer); (void) snprintf(buffer,sizeof(buffer),"%s.%s",todo,EXTODO); argv[0]=SENDER; argv[1]="-c"; argv[2]=config; - argv[3]=buffer; + argv[3]="-d"; + argv[4]=dbgstr; + argv[5]=buffer; if (rootdir!=(char *)0) { - argv[3]="-r"; - argv[4]=rootdir; - argv[5]=buffer; + argv[5]="-r"; + argv[6]=rootdir; + argv[7]=buffer; } (void) rou_alert(0,"%s JMPDBG starting sender=<%s> todo= <%s>", OPEP,execpath,buffer); diff --git a/lib/lvleml.c b/lib/lvleml.c index e3f9cc0..f36c89c 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -795,6 +795,8 @@ return done; static _Bool connect_to_mx(RMTTYP *rmt) { +#define OPEP "lvleml.c:connect_to_mx," + _Bool done; int phase; int proceed; @@ -819,6 +821,8 @@ while (proceed==true) { srcip=(const char *)0; while (*mxs!=(MXTYP *)0) { rmt->curmx=*mxs; + (void) rou_alert(0,"%s JMPDBG trying connect to <%s>", + OPEP,rmt->curmx->mxname); rmt->socptr=soc_openfeedsock(pro_smtp,srcip,rmt->curmx->mxname,EMLPORT); if (rmt->socptr!=(SOCPTR *)0) { char cmt[100]; @@ -858,6 +862,8 @@ while (proceed==true) { phase++; } return done; + +#undef OPEP } /* ^L @@ -1034,6 +1040,18 @@ while (proceed==true) { (void) snprintf(cmt,sizeof(cmt),"Unable to contact ANY MX for domain <%s>", dstdomain); (void) log_fprintlog(rmt.logptr,false,cmt); + if (tra!=(TRATYP **)0) { + char note[150]; + + (void) snprintf(note,sizeof(note),"%d %s",NOANSWR,cmt); + while (*tra!=(TRATYP *)0) { + register char **resp; + + resp=(char **)0; + (*tra)->resp=(char **)rou_addlist((void **)resp,(void *)strdup(note)); + tra++; + } + } phase=999; //No need to go further } break; diff --git a/lib/unieml.h b/lib/unieml.h index ad886dc..a325007 100644 --- a/lib/unieml.h +++ b/lib/unieml.h @@ -17,6 +17,7 @@ #define CMDOK 250 //Everything OK #define DATAOK 354 //Ready to accept EMAIL data #define ERRPROC 451 //local processing error +#define NOANSWR 460 //no answer from remote #define BADPAR 501 //error in parameters #define CMDBAD 502 //command not implemented #define DATRJC 521 //Data Rejected -- 2.47.3