From 5be573660d291f0a9fef4d9a667e93e41f384dac Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Mon, 9 Jun 2025 18:28:46 -0400 Subject: [PATCH] If successfull message is sent just once --- lib/lvleml.c | 38 ++++++++++++++++++++++++++++++++++---- lib/unieml.h | 1 + 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/lvleml.c b/lib/lvleml.c index fed0a05..396c03d 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -949,7 +949,7 @@ tobesend=0; phase=0; proceed=true; while (proceed==true) { - //(void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase); + (void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase); switch (phase) { case 0 : //process completed? if ((*tra)==(TRATYP *)0) @@ -1026,18 +1026,48 @@ while (proceed==true) { switch (rspcode) { case CMDOK : //originator accepted tobesend++; + (*dest)->sendcode=rspcode; + break; + case UKNUSER : //originator accepted + (*dest)->code='C'; //completed (Temporary JMPDBG); + (*dest)->sendcode=rspcode; break; default : //Not accepted recipient + (void) rou_alert(0,"%s sessid=<%s>, unknwon code='%d'", + OPEP,sessid,rspcode); + (*dest)->code='C'; //completed (Temporary JMPDBG); + (*dest)->sendcode=BADPAR; break; } dest++; } + if (tobesend==0) + phase++; //no user accepted (no data) break; } - case 7 : //send email data - if (tobesend>0) - (void) senddata(&rmt,tosend,sessid); + case 7 : { //send email data + int rspcode; + TRATYP **dest; + + rspcode=senddata(&rmt,tosend,sessid); + dest=tosend; + while (*dest!=(TRATYP *)0) { + switch ((*dest)->sendcode) { + case CMDOK : + (*dest)->code='C'; //Data was sent properly + break; + case UKNUSER : //NO BREAK + case BADPAR : + break; + default : + (void) rou_alert(0,"%s sessid=<%s>, Unexpected code='%d' (Bug?)", + OPEP,sessid,rspcode); + break; + } + dest++; + } break; + } case 8 : //cleaning recipient list (void) free(tosend); tosend=(TRATYP **)0; diff --git a/lib/unieml.h b/lib/unieml.h index 9016176..ad886dc 100644 --- a/lib/unieml.h +++ b/lib/unieml.h @@ -20,6 +20,7 @@ #define BADPAR 501 //error in parameters #define CMDBAD 502 //command not implemented #define DATRJC 521 //Data Rejected +#define UKNUSER 551 //Unknown user #define MALABRT 552 //email data rejected #define NOTEML 553 //Not an email address #define MISSMX 563 //NO MX found for recipient -- 2.47.3