]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Problem with soc_openfeedsock (memory corruption?)
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 15 Jun 2025 03:52:45 +0000 (23:52 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 15 Jun 2025 03:52:45 +0000 (23:52 -0400)
Makefile
lib/devsoc.c
lib/lvleml.c

index 766697d58d624463be74695dde3c97063bb4d60d..4e9f106594f5ac4741feb92df6f52272492280fa 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -99,7 +99,8 @@ dbgsorter:  clean debug
 #--------------------------------------------------------------------
 #To test sender
 onesend        :  clean debug
-          @ gdb                                        \
+          @                                            \
+             gdb                                       \
                --args                                  \
             ./bin/sender                               \
                  -f                                    \
@@ -128,7 +129,8 @@ dbgsend     :  clean debug
           @ cp -a                                      \
                ./data-sender/*                         \
                $(TESTDIR)/var/spool/$(APPNAME)/queue/
-          @ gdb                                        \
+          @                                            \
+             gdb                                       \
                --args                                  \
                  bin/sender                            \
                    -d2                                 \
@@ -139,7 +141,7 @@ dbgsend     :  clean debug
 
 #--------------------------------------------------------------------
 #testing feed
-ONEFEED=feed03.tst
+ONEFEED=feed01.tst
 
 FEEDPAR        =                                               \
                $(TESTIP)                               \
index 38f741b48043d6c682f76879c337e94cb732b183..9d6561f5fe318f74532b2be5cbc911ca20315f8a 100644 (file)
@@ -649,7 +649,7 @@ timeout.tv_sec=swait;
 hints.ai_family=PF_UNSPEC;
 hints.ai_flags=HINTFLG;
 hints.ai_socktype=SOCK_STREAM;
-ai=(struct addrinfo *)0;
+//ai=(struct addrinfo *)0;
 phase=0;
 proceed=true;
 while (proceed==true) {
index 54dbec9c26ca624399b832680015b70bbc0d8e13..d2f6733bf67a075610387b4fe5ab2282f7eff8e3 100644 (file)
@@ -901,6 +901,14 @@ 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;
+  }
 return rmt;
 }
 /*
@@ -927,6 +935,7 @@ int proceed;
 done=false;
 orgdomain=strrchr(tra->mailfrom,'@');
 dstdomain=strrchr(tra->rcptto,'@');
+mxs=(MXTYP **)0;
 rmt=(RMTTYP *)0;
 phase=0;
 proceed=true;
@@ -946,6 +955,7 @@ while (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);
@@ -954,6 +964,7 @@ while (proceed==true) {
       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);
@@ -1224,11 +1235,11 @@ while (proceed==true) {
         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;