From: Jean-Marc Pigeon (Delson) Date: Sun, 15 Jun 2025 13:25:23 +0000 (-0400) Subject: Need to check code close_mx X-Git-Tag: tag-0.9~174 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=29be56a92fd17c961db9c764b6ccf160255a6612;p=jmp%2Fmailleur Need to check code close_mx --- diff --git a/lib/lvleml.c b/lib/lvleml.c index 8a3322d..d09bd7f 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -901,15 +901,50 @@ return done; static RMTTYP *close_mx(RMTTYP *rmt) { -if (rmt!=(RMTTYP *)0) { - rmt->socptr=soc_closefeedsock(rmt->socptr); - rmt->mxs=dns_freemxlist(rmt->mxs); - rmt->orgdomain=rou_freestr(rmt->orgdomain); - rmt->dstdomain=rou_freestr(rmt->dstdomain); - (void) free(rmt); - rmt=(RMTTYP *)0; +#define OPEP "lvleml.c:close_mx," + +int phase; +_Bool proceed; + +phase=0; +proceed=(rmt!=(RMTTYP *)0); +while (proceed==true) { + switch (phase) { + case 0 : //need to disconnect + if (rmt->socptr!=(SOCPTR *)0) { + char **resp; + int rspcode; + + resp=(char **)0; + rspcode=tcp_smtp_command(rmt,&resp,"QUIT"); + switch (rspcode) { + case QUITOK : //Everything fine + break; + default : + (void) rou_alert(0,"%s Unexpected QUIT status='%d' (check code!)", + OPEP,rspcode); + break; + } + resp=(char **)rou_freelist((void **)resp,(genfree_t)rou_freestr); + rmt->socptr=soc_closefeedsock(rmt->socptr); + } + break; + case 1 : //free memory + rmt->mxs=dns_freemxlist(rmt->mxs); + rmt->orgdomain=rou_freestr(rmt->orgdomain); + rmt->dstdomain=rou_freestr(rmt->dstdomain); + (void) free(rmt); + rmt=(RMTTYP *)0; + break; + default : //SAFE Guard + proceed=false; + break; + } + phase++; } return rmt; + +#undef OPEP } /* ^L