*/
/********************************************************/
/* */
-/* Procedure to display/debug TRATYP record content*/
+/* Procedure to add a add domain reference to a */
+/* list of reference. */
/* */
/********************************************************/
-static REFTYP **sortref(REFTYP **reflist,TRATYP *trans)
+static REFTYP **addref(REFTYP **reflist,TRATYP *trans)
{
-#define OPEP "geseml.c:sortref,"
+#define OPEP "geseml.c:addref,"
char *dom;
REFTYP *ref;
*/
/********************************************************/
/* */
+/* Procedure to display/debug TRATYP record content*/
+/* */
+/********************************************************/
+static void print_tra(FILE *qfile,char *line,char *temps)
+
+{
+if (qfile==(FILE *)0)
+ (void) rou_alert(0,"TRA=<%s>",line);
+else {
+ (void) fprintf(qfile,"%s\n",temps);
+ (void) fprintf(qfile,"%s\n",line);
+ }
+}
+/*
+\f
+*/
+/********************************************************/
+/* */
/* Procedure to display/debug ONE TRATYP record */
/* content */
/* */
tra->mailfrom,
tra->rcptto
);
- if (qfile==(FILE *)0) {
- (void) rou_alert(0,"TRA=<%s>",line);
- }
- else {
- (void) fprintf(qfile,"%s\n",temps);
- (void) fprintf(qfile,"%s\n",line);
- }
+ (void) print_tra(qfile,line,temps);
}
return status;
}
/* Procedure to free memory used by a TRATYP record*/
/* */
/********************************************************/
-PUBLIC TRATYP *eml_freetra(TRATYP *trans)
+PUBLIC TRATYP *eml_freetra(TRATYP *tra)
{
-if (trans!=(TRATYP *)0) {
- trans->rcptto=rou_freestr(trans->rcptto);
- trans->mailfrom=rou_freestr(trans->mailfrom);
- trans->sessid=rou_freestr(trans->sessid);
- (void) free(trans);
- trans=(TRATYP *)0;
+if (tra!=(TRATYP *)0) {
+ tra->rcptto=rou_freestr(tra->rcptto);
+ tra->mailfrom=rou_freestr(tra->mailfrom);
+ tra->sessid=rou_freestr(tra->sessid);
+ tra->resp=(char **)rou_freelist((void **)tra->resp,(genfree_t)rou_freestr);
+ (void) free(tra);
+ tra=(TRATYP *)0;
}
-return trans;
+return tra;
}
/*
\f
/* Procedure to duplicate TRATYP structure */
/* */
/********************************************************/
-PUBLIC TRATYP *eml_duptra(TRATYP *trans)
+PUBLIC TRATYP *eml_duptra(TRATYP *tra)
{
TRATYP *dup;
dup=(TRATYP *)0;
-if (trans!=(TRATYP *)0) {
+if (tra!=(TRATYP *)0) {
dup=(TRATYP *)calloc(1,sizeof(TRATYP));
- dup->code=trans->code;
- dup->date=trans->date;
- dup->delay=trans->delay;
- dup->rcptto=strdup(trans->rcptto);
- dup->mailfrom=strdup(trans->mailfrom);
- dup->sessid=strdup(trans->sessid);
+ dup->code=tra->code;
+ dup->date=tra->date;
+ dup->delay=tra->delay;
+ dup->rcptto=strdup(tra->rcptto);
+ dup->mailfrom=strdup(tra->mailfrom);
+ dup->sessid=strdup(tra->sessid);
+ if (tra->resp!=(char **)0) {
+ char **ptr;
+
+ ptr=tra->resp;
+ while (*ptr!=(char *)0) {
+ dup->resp=(char **)rou_addlist((void **)dup->resp,(void *)strdup(*ptr));
+ ptr++;
+ }
+ }
}
return dup;
}
domlist=(REFTYP **)0;
if (list!=(TRATYP **)0) {
while (*list!=(TRATYP *)0) {
- domlist=sortref(domlist,*list);
+ domlist=addref(domlist,*list);
list++;
}
}
/* Procedure to send the data to the remote server */
/* */
/********************************************************/
-static int senddata(RMTTYP *rmt,TRATYP **tosend,const char *sessid)
+static void senddata(RMTTYP *rmt,TRATYP **tosend,const char *sessid)
{
#define OPEP "lvleml.c:senddata,"
const char *fmt;
unsigned int delta;
-
sent+=1023;
sent/=1024; //Sent now in KByes
fmt="Data stream Sent: %d Kbytes within %d.%03d seconds";
break;
}
break;
- case 4 : //Updating sending
+ case 4 : //Updating sending
+ TRATYP **dest;
+
+ dest=tosend;
+ while (*dest!=(TRATYP *)0) {
+ switch ((*dest)->sendcode) {
+ case CMDOK :
+ if (rspcode==CMDOK) {
+ (*dest)->code='C'; //Data was sent properly
+ }
+ break;
+ case UKNUSER : //NO BREAK
+ case BADPAR :
+ break;
+ default :
+ (void) rou_alert(0,"%s sessid=<%s>, Unexpected code='%d' (Bug?)",
+ OPEP,sessid,rspcode);
+ break;
+ }
+ dest++;
+ }
break;
- default : //SAFE Guard
+ default : //SAFE Guard
proceed=false;
break;
}
phase++;
}
-return rspcode;
-
#undef OPEP
}
/*
phase=0;
proceed=true;
while (proceed==true) {
- (void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase);
+ //(void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //process completed?
if ((*tra)==(TRATYP *)0)
}
dest++;
}
- if (tobesend==0)
- phase++; //no user accepted (no data)
- break;
- }
- case 7 : { //send email data
- int rspcode;
- TRATYP **dest;
-
- rspcode=senddata(&rmt,tosend,sessid);
- dest=tosend;
- while (*dest!=(TRATYP *)0) {
- switch ((*dest)->sendcode) {
- case CMDOK :
- (*dest)->code='C'; //Data was sent properly
- break;
- case UKNUSER : //NO BREAK
- case BADPAR :
- break;
- default :
- (void) rou_alert(0,"%s sessid=<%s>, Unexpected code='%d' (Bug?)",
- OPEP,sessid,rspcode);
- break;
- }
- dest++;
- }
+ if (tobesend>=0)
+ (void) senddata(&rmt,tosend,sessid);
break;
}
case 8 : //cleaning recipient list