]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Able to reconnize protocol
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Tue, 11 Mar 2025 18:23:21 +0000 (14:23 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Tue, 11 Mar 2025 18:23:21 +0000 (14:23 -0400)
lib/devsoc.c
lib/devsoc.h
lib/modrec.c

index 43abc823f7edc28c9bd7af1f4cef905abf5eeedc..888f91550562a9ee68c86bedcc8c4bc4bf480670 100644 (file)
@@ -455,6 +455,38 @@ return handle;
 */
 /********************************************************/
 /*                                                     */
+/*     Procedure to parse an email protocol            */
+/*                                                     */
+/********************************************************/
+PUBLIC PROTYP soc_getprotocol(const char *strproto)
+
+{
+static struct  {
+                PROTYP proto;
+                const char *voca;
+                }prolist[]={
+                          {pro_smtp,""},
+                          {pro_smtp,"smtp"},
+                          {pro_smtps,"smtps"},
+                          {pro_unknwn,(char *)0}
+                          };
+PROTYP proto;
+
+
+proto=pro_unknwn;
+for (int i=0;prolist[i].voca!=(char *)0;i++) {
+  if (strcasecmp(strproto,prolist[i].voca)==0) {
+    proto=prolist[i].proto;
+    break;
+    }
+  }
+return proto;
+}
+/*
+\f
+*/
+/********************************************************/
+/*                                                     */
 /*     Procedure to free memory used by a bind         */
 /*     definition.                                     */
 /*                                                     */
index 24b7679a901f323673fbf0e7e3c9c07ccccfafc8..c5c31181e9000c3f4848db04fbcaa87c2eca5668 100644 (file)
@@ -26,6 +26,9 @@ typedef enum    {
 //reference to a socket definition
 typedef void SOCPTR;
 
+//procedure to parse an email protocol 
+extern PROTYP soc_getprotocol(const char *strproto);
+
 //procedure to free all memory used by a TCP socket
 //definition (once closed) 
 extern SOCPTR **soc_freebindinf(SOCPTR **socptr);
index 43a805777eae7d8450c8cd04dc15ffc773027ef5..980354589481addd8c5c941fde67748ffcf62c18 100644 (file)
@@ -54,13 +54,15 @@ for (int i=0;i<argc;i++) {
   char *ipnum;
   char *port;
   char *ptr;
+  char config[80];
 
+  (void) strncpy(config,argv[i],sizeof(ptr));
+  ptr=config;
   iteration=1;
   proto=pro_smtp; 
   ipnum=DFLTIP;
   port=SMTPORT;
-  ptr=argv[i];
-  (void) rou_alert(0,"JMPDBG argv[%d]=<%s>",i,ptr);
+  (void) rou_alert(0,"JMPDBG argv[%d]=<%s>",i,argv[i]);
   for (int j=0;j<3;j++) {
     char *sofar;
 
@@ -70,6 +72,11 @@ for (int i=0;i<argc;i++) {
     sofar++;
     switch (j) {
       case 0    :
+        if ((proto=soc_getprotocol(ptr))==pro_unknwn) {
+          (void) rou_alert(0,"%s, protocol unknown within config <%s>",
+                             OPEP,argv[i]);
+          proto=pro_smtp;
+          }
         break;
       case 1    :
         ipnum=ptr;