From dad62291ff2ca519ed8e4f20aa9acacd56460f06 Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Sat, 7 Jun 2025 07:21:42 -0400 Subject: [PATCH] on going work on sending_email --- lib/lvleml.c | 79 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/lib/lvleml.c b/lib/lvleml.c index b2681bf..4f623d1 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -685,49 +685,64 @@ static void sending_email(char *domain,char *sessid,TRATYP **tra) time_t isnow; MXTYP **mxs; +TRATYP **tosend; +int phase; +_Bool proceed; isnow=time((time_t *)0); mxs=dns_getmx(domain); -while (*tra!=(TRATYP *)0) { - if (((*tra)->date+(*tra)->delay)<=isnow) { - int phase; - _Bool proceed; - - phase=0; - proceed=true; - while (proceed==true) { - switch (phase) { - case 0 : //is connection open? - break; - case 1 : //do we need to reset connection +tosend=(TRATYP **)0; +phase=0; +proceed=true; +while (proceed==true) { + (void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase); + switch (phase) { + case 0 : //process completed? + if ((*tra)==(TRATYP *)0) + phase=999; //all scanning done + break; + case 1 : //collecting email to be sent + while (*tra!=(TRATYP *)0) { + if (strcmp((*tra)->sessid,sessid)!=0) { + sessid=(*tra)->sessid; break; - case 2 : //listing recipient + } + if (((*tra)->date+(*tra)->delay)<=isnow) { switch ((*tra)->code) { - case 'R' : //local email (MX is local) - (void) rou_alert(0,"%s JMPDBG sending to recipient=<%s>", - OPEP,(*tra)->rcptto); + case 'R' : //remote email (MX is remote) + (void) eml_add_delay(isnow,*tra); + tosend=(TRATYP **)rou_addlist((void **)tosend,(void *)(*tra)); break; - default : //Unexpected remote? email?? + default : //Status is not to be send (void) rou_alert(0,"%s Directive is not! remote email (Bug?)",OPEP); - (void) rou_alert(0,"%s TRA=<%cs %lu %04u %s %s %s",OPEP, - (*tra)->code, - (*tra)->date, - (*tra)->delay, - (*tra)->sessid, - (*tra)->mailfrom, - (*tra)->rcptto); break; } - break; - default : //SAFE Guard - proceed=false; - break; + } + tra++; } - phase++; - } + break; + case 2 : //Checking if we have email to be sent + if (tosend==(TRATYP **)0) + phase=-1; //lets continue to see other email + break; + case 3 : //checking if connection is open + break; + case 4 : //Opening connection if not open + break; + case 5 : //sending recipient list + break; + case 6 : //send email data + break; + case 7 : //cleaning recipient list + (void) free(tosend); + tosend=(TRATYP **)0; + phase=0; //Lets see if we have other recipient + break; + default : //SAFE Guard + proceed=false; + break; } - (void) eml_add_delay(isnow,*tra); - tra++; + phase++; } mxs=dns_freemxlist(mxs); #undef OPEP -- 2.47.3