#include "lvleml.h"
#include "modrec.h"
+/*
+\f
+*/
+/********************************************************/
+/* */
+/* Procedure to returne the local argv */
+/* */
+/********************************************************/
+static char **getconfargv()
+
+{
+char **confargv;
+char *data;
+char *conf;
+
+confargv=(char **)0;
+conf=(char *)0;
+if ((conf=getenv("SMTPPORTS"))!=(char *)0)
+ conf=strdup(conf);
+data=conf;
+while (data!=(char *)0) {
+ char *ptr;
+ char *seg;
+
+ if ((ptr=strchr(data,','))!=(char *)0) {
+ *ptr='\000';
+ ptr++;
+ }
+ seg=strdup(data);
+ (void) rou_alert(0,"JMPDBG seg=<%s>",seg);
+ confargv=(char **)rou_addlist((void **)confargv,(void *)seg);
+ data=ptr;
+ }
+conf=rou_freestr(conf);
+return confargv;
+}
/*
\f
*/
/* Possible argument format are: */
/* protocol:ipnum:port:iteration */
/* example: */
-/* :ipnum::: -> smtp:ipnum:25:1 */
-/* smtps:ipnum:465:2 */
+/* |ipnum||| -> smtp|ipnum|25|1 */
+/* smtps|ipnum|465|2 */
/* -> smtps protocol,port 465,2 iteration */
/* */
/********************************************************/
{
#define OPEP "moderec.c:prepbinding"
+#define DFLTSET "smtp|0.0.0.0|25|2"
#define DIP "0.0.0.0"
#define DPORT "25"
+char *locargv[2];
+
+(void) memset(locargv,'\000',sizeof(locargv));
*bindings=(SOCPTR **)0;
+if (argc==0) {
+ argc=1;
+ locargv[0]=DFLTSET; //very last default configuration
+ argv=locargv;
+ }
for (int i=0;i<argc;i++) {
int iteration;
PROTYP proto;
#undef DPORt
#undef DIP
+#undef DFLSET
#undef OPEP
}
/*
{
#define OPEP "modrec.c:rec_handlesmtp"
#define RELAX 5 //Relax time between process checking
-#define DFLTSET "smtp|0.0.0.0|25|2"
pid_t *childs;
-char *locargv[2];
+char **confargv;
int nbrbind;
_Bool allbusy;
SOCPTR **bindings;
_Bool proceed;
childs=(pid_t)0;
-(void) memset(locargv,'\000',sizeof(locargv));
-locargv[0]=getenv("SMTPPORTS");
-if (locargv[0]==(char *)0)
- locargv[0]=DFLTSET; //default configuration
-if (argc==0) {
- argc=1;
- argv=locargv;
- }
+confargv=getconfargv();
nbrbind=0;
allbusy=false;
bindings=(SOCPTR **)0;
+if (argc==0) {
+ argc=rou_nbrlist((void **)confargv);
+ argv=confargv;
+ }
phase=0;
proceed=true;
while (proceed==true) {
//(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //preparing iteration
+ //JMPDBG
+ for (int i=0;i<argc;i++)
+ (void) rou_alert(0,"%s JMPDBG argv[%d]=<%s>",OPEP,i,argv[i]);
+ //JMPDBG
+ (void) rou_alert(0,"%s JMPDBG argv=<%s>",OPEP,argv[0]);
if ((nbrbind=prepbinding(&bindings,argc,argv))==0) {
(void) rou_alert(0,"%s, No listening IP found (config?)",OPEP);
phase=999;
}
phase++;
}
-
-#undef DFLTSET
+confargv=(char **)rou_freelist((void **)confargv,(genfree_t)rou_freestr);
#undef RELAX
#undef OPEP
}