@ rm -fr $(TESTDIR)/var/spool/$(APPNAME)/queue/*
@ bin/feeder \
-f \
- -d 2 \
+ -d 6 \
-c ./conf/$(APPNAME).conf.dvl \
$(TESTIP) \
$(TESTPORT) \
- ./$(DATATST)/feed00.tst
+ ./$(DATATST)/feed12.tst
@ rm -fr ./data-sorter/*
@ cp -a \
$(TESTDIR)/var/spool/$(APPNAME)/queue/* \
-c ./conf/feeder.conf.dvl \
$(TESTIP) \
$(TESTPORT) \
- $(DATATST)/dbgfeed.tst
+ $(DATATST)/feed12.tst
valfeed : debug #valgring of emlrcvr
@ echo "feed valgrind test"
/* server. */
/* */
/************************************************/
-static _Bool dosenddata(FEEDTYP *fd,int *numline)
+static _Bool dosenddata(FEEDTYP *fd,int *numline,char *expected)
{
#define OPEP "feeder.c:dosenddata,"
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 : //Transmit "DATA" to remote
if (tcp_write(fd->socptr,action)!=(strlen(action)+2))
phase=999; //Didn't get signon
break;
case 2 : //did we received the Proper "proceed" acknoledge
- if (line!=(char *)0) { //Always
- int code;
-
- code=0;
- (void) sscanf(line,"%d",&code);
- if (code!=DATAOK)
- phase=999;
- line=rou_freestr(line);
+ if (strcmp(line,expected)!=0) {
+ (void) rou_alert(0,"expecting\t'%s'",expected);
+ (void) rou_alert(0,"found\t\t'%s'",line);
+ phase=999; //did NOT get proper signon
}
break;
case 3 : //
(void) report(*numline,line,"Unable to set comment mode");
break;
case cmd_data : //sending email content to remote
- if ((status=dosenddata(fd,numline))==false)
+ if ((status=dosenddata(fd,numline,param))==false)
(void) report(*numline,line,"Unable to fully send data");
break;
case cmd_gotls : //GOTLS
--- /dev/null
+#====================================================
+T:(feed12) Trying to send Email whil there no recipient known
+R:220 mailleur.example.com, ESMTP (cleartext) emlrcvr...
+#====================================================
+S:HELO example.com
+R:250 mailleur.example.com, link (cleartext) ready,...
+S:MAIL FROM: <trouble@subdom1.example.com>
+R:250 2.1.3 trouble@subdom1.example.com.. sender ok
+S:RCPT TO: <dom1user1@subdom0.example.com>
+R:563 5.6.3 No valid MX found for recipient domain name (domain=subdom0.example.com)
+#-------------------------------------------------------------------------
+#-sending data
+C:DATA 503 5.5.0 RCPT first. transaction protocol command out of sequence
+C:.
+#-------------------------------------------------------------------------
+S:QUIT
+R:221 2.0.0 Bye, closing connection...
while (proceed==true) {
//(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
- case 0 : //opening the queue email
+ case 0 : //checking if we have recipient
+ if (rou_nbrlist((void **)contact->recipients)==0) {
+ char *cmt;
+
+ cmt="RCPT first. transaction protocol command out of sequence";
+ (void) transmit(contact,"%d 5.5.0 %s",BADSEQ,cmt);
+ done=true; //lets say DATA will be issued
+ proceed=false; //No recipients
+ }
+ break;
+ case 1 : //opening the queue email
if ((queue=eml_createqfile(contact->cursesid,""))==(FILE *)0)
phase=999; //trouble trouble
break;
- case 1 : //adding received stamp to file
+ case 2 : //adding received stamp to file
if (addreceived(contact,queue)==false)
phase=999; //trouble trouble
break;
- case 2 : //sending 'go ahead' to remote
+ case 3 : //sending 'go ahead' to remote
(void) clock_gettime(CLOCK_REALTIME,&start);
(void) transmit(contact,"%d 3.5.0 %s",
DATAOK,"End data with <CR><LF>.<CR><LF>");
break;
- case 3 : //get incoming line, detect 'single dot' as end
+ case 4 : //get incoming line, detect 'single dot' as end
while (completed==false) {
int got;
char *line;
line=rou_freestr(line);
}
break;
- case 4 : //got all data
+ case 5 : //got all data
if (eml_closeqfile(queue)<0)
phase=999; //Trouble trouble
break;
- case 5 : //creating the count file
+ case 6 : //creating the count file
if (setcountfile(contact)==false)
phase=999; //Unable to create count file???
break;
- case 6 : //renameing directive
+ case 7 : //renameing directive
if (eml_renameqfile(contact->cursesid,EXTMP,EXTRANS)==false)
phase=999; //Trouble trouble
break;
- case 7 : //everything fine
+ case 8 : //everything fine
const char *fmt;
unsigned int delta;
#define NOANSWR 460 //no answer from remote
#define BADPAR 501 //error in parameters
#define CMDBAD 502 //command not implemented
+#define BADSEQ 503 //out of sequence command
#define DATRJC 521 //Data Rejected
#define REJECT 550 //E-mail/domain rejected
#define UKNUSER 551 //Unknown user