]> SAFE projects GIT repository - jmp/mailleur/commitdiff
starting sending_email procedure
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Fri, 6 Jun 2025 17:27:35 +0000 (13:27 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Fri, 6 Jun 2025 17:27:35 +0000 (13:27 -0400)
app/sorter.c
lib/lvleml.c
lib/unieml.c

index 0dffc0b75d6297aabac34a94b9391fb8b6059a29..172e08c5fb6c046f41aaa672ce873da145919038 100644 (file)
@@ -54,7 +54,7 @@ while (proceed==true) {
         while (*ptr!=(char *)0) {
           FILE *qfile;
 
-          (void) rou_alert(0,"%s fame=<%s>",OPEP,*ptr);
+          (void) rou_alert(5,"%s fame=<%s>",OPEP,*ptr);
           if ((qfile=eml_openqfile(*ptr,(const char *)0))!=(FILE *)0) {
             trans=eml_scanqfile(trans,qfile);
             (void) eml_closeqfile(qfile);
index a2d676426ed63333f945283585f1f8ca388d7f56..b2681bfade1fabe0d288a530befc3950d412d0e6 100644 (file)
@@ -675,6 +675,68 @@ return true;
 */
 /********************************************************/
 /*                                                      */
+/*     Procedure to send the whole email transaction   */
+/*                                                      */
+/********************************************************/
+static void sending_email(char *domain,char *sessid,TRATYP **tra)
+
+{
+#define OPEP    "lvleml.c:sending_email,"
+
+time_t isnow;
+MXTYP **mxs;
+
+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
+          break;
+        case 2          :       //listing recipient
+          switch ((*tra)->code) {
+            case 'R'    :       //local email (MX is local)
+              (void) rou_alert(0,"%s JMPDBG sending to recipient=<%s>",
+                                  OPEP,(*tra)->rcptto);
+              break;
+            default     :       //Unexpected remote? email??
+              (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;
+        }
+      phase++;
+      }
+    }
+  (void) eml_add_delay(isnow,*tra);
+  tra++;
+  }
+mxs=dns_freemxlist(mxs);
+#undef  OPEP
+}
+/*
+^L
+*/
+/********************************************************/
+/*                                                      */
 /*     Procedure to proceed with peer exchange         */
 /*      5 return values:                                */
 /*         1 exiting via "quit"                         */
@@ -1047,6 +1109,48 @@ PUBLIC void eml_remote_email(TRATYP **tra)
 {
 #define OPEP    "lvleml.c:eml_remote_email,"
 
-(void) rou_alert(0,"%s JMPDBG foreground='%d'",OPEP,foreground);
+char *domain;
+char *sessid;
+int phase;
+_Bool proceed;
+
+domain=(char *)0;
+sessid=(char *)0;
+phase=0;
+proceed=true;
+while (proceed==true) {
+  switch (phase) {
+    case 0      :       //Check if we have tra
+      if (tra==(TRATYP **)0) {
+        (void) rou_alert(0,"%s Transaction pointer is NULL (Bug?)",OPEP);
+        phase=999;
+        }
+      break;
+    case 1      :       //detecting remote domain
+      if ((domain=strrchr((*tra)->rcptto,'@'))!=(char *)0)
+        domain++;
+      if (domain==(char *)0) {
+        (void) rou_alert(0,"%s Recipient address <%s> without domain? (Bug?)",
+                            OPEP,(*tra)->rcptto);
+        phase=999;
+        }
+      break;
+    case 2      :       //checking if we have a session ID
+      sessid=(*tra)->sessid;
+      if (sessid==(char *)0) {
+        (void) rou_alert(0,"%s Session ID is NULL (Bug?)",OPEP);
+        phase=999;
+        }
+      break;
+    case 3      :       //sending the whole transaction to remote server
+      (void) sending_email(domain,sessid,tra);  
+      break;
+    default     :       //SAFE Guard
+      proceed=false;
+      break;
+    }
+  phase++;
+  }
+
 #undef  OPEP
 }
index be2e7dd449914ad4b6a3ca8b3122eac45db970c1..b259a4f1d9fcb02cd3a5cc3218eff2536f550bde 100644 (file)
@@ -479,7 +479,7 @@ while (proceed==true) {
           continue;             //extension not found
         if ((strlen(ptr)!=taille)&&(*(ptr-1)!='.')) 
           continue;             //Not the right extension
-        (void) rou_alert(0,"%s JMPDBG got <%s>",OPEP,data->d_name);
+        (void) rou_alert(6,"%s got <%s>",OPEP,data->d_name);
         dnames=(char **)rou_addlist((void **)dnames,(void *)strdup(data->d_name));
         }
       break;