]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Able to set 'L' or 'R' about recipient domain
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 18 May 2025 19:40:40 +0000 (15:40 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 18 May 2025 19:40:40 +0000 (15:40 -0400)
data-feed/xxfeed.tst
lib/lvleml.c

index 038bd151e52309d02f447b271eeea990aa9bb3f8..f9290fa0085dd49e379adcc1228cd20e55acf9cb 100644 (file)
@@ -7,6 +7,8 @@ S:HELO example.com
 R:250-mailleur.example.com, link (cleartext) ready,...
 S:MAIL FROM: <postmaster@example.com>
 R:250 2.1.3 postmaster@example.com.. sender ok
+S:RCPT TO: <webmaster@example.com>
+R:250 2.6.4 Address accepted
 S:RCPT TO: <dom1user1@subdom1.example.com>
 R:250 2.6.4 Address accepted
 S:RCPT TO: <dom2user1@subdom2.example.com>
index e4b89dd5aeef854f48b3e1795aaa66a1c6a4e249..463e9c95a262bac393b98678f8102f4f0e08e301 100644 (file)
@@ -60,6 +60,54 @@ return contact;
 */
 /********************************************************/
 /*                                                      */
+/*     Procedure to get the domain code                */
+/*                                                      */
+/********************************************************/
+static _Bool setlocdom(CONTYP *contact,RCPTYP *rcpt)
+
+{
+#define OPEP    "lvleml.c:setlocdom,"
+
+char done;
+int phase;
+_Bool proceed;
+
+done=true;
+phase=0;
+proceed=true;
+while (proceed==true) {
+  //(void) rou_alert(0,"JMPDBG %s phase='%d' parm=<%s>",OPEP,phase,parameter);
+  switch (phase) {
+    case 0      :       //is RCPT ok;
+      if ((rcpt==(RCPTYP *)0)||(rcpt->domain==(char *)0)) {
+        (void) rou_alert(0,"%s Recipient is NULL (Bug!?)",OPEP);
+        done=false;
+        phase=999;
+        }
+      break;
+    case 1      :       //check about local domain, TEMPORARY code
+      if (strcmp(rcpt->domain,"example.com")==0) {
+        rcpt->code='L';       //domain is local
+        phase=999;      //No need to go further
+        }
+      break;
+    case 2      :       //domain is a remote one
+      rcpt->code='R';        
+      break;
+    default     :       //SAFE Guard
+      proceed=false;
+      break;
+    }
+  phase++;
+  }
+return done;
+#undef  OPEP
+}
+/*
+^L
+*/
+/********************************************************/
+/*                                                      */
 /*     Procedure to transmit a string to the remot peer*/
 /*                                                      */
 /********************************************************/
@@ -501,6 +549,7 @@ while (proceed==true) {
         }
       break;
     case 3      :       //Do we have a domain MX
+      (void) setlocdom(contact,neu);
       if (neu->domain!=(const char *)0) {  //always
         MXTYP **mx;