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;
+ }
return rmt;
}
/*
done=false;
orgdomain=strrchr(tra->mailfrom,'@');
dstdomain=strrchr(tra->rcptto,'@');
+mxs=(MXTYP **)0;
rmt=(RMTTYP *)0;
phase=0;
proceed=true;
case 1 : //looking for MX list
orgdomain++;
dstdomain++;
+ mxs=dns_getmx(dstdomain);
if (mxs==(MXTYP **)0) {
(void) log_fprintlog(rmt->logptr,false,"NO MX found for domain <%s>",
dstdomain);
break;
case 2 : //creating rmt record
rmt=(RMTTYP *)calloc(1,sizeof(RMTTYP *));
+ rmt->logptr=logptr;
rmt->mxs=mxs;
rmt->orgdomain=strdup(orgdomain);
rmt->dstdomain=strdup(dstdomain);
phase=-1; //lets continue to see other email
break;
case 3 : //Opening connection if not open
- if ((rmt=connect_mx(logptr,*tra))==(RMTTYP *)0) {
+ if ((rmt=connect_mx(logptr,*tosend))==(RMTTYP *)0) {
char cmt[100];
(void) snprintf(cmt,sizeof(cmt),"Unable to contact ANY MX to reach <%s>",
- (*tra)->rcptto);
+ (*tosend)->rcptto);
(void) log_fprintlog(logptr,false,cmt);
if (tosend!=(TRATYP **)0) {
TRATYP **ptr;