onefeed : debug
@ bin/feeder \
-f \
- -d3 \
+ -d2 \
$(TESTIP) \
$(TESTPORT) \
$(DATATST)/feed00.tst
static _Bool doincoming(SOCPTR *socptr,int numline,char *line)
{
-#define OPEP "tstfeed.c:doincoming"
+#define OPEP "feeder.c:doincoming"
#define STRETC "..."
_Bool status;
case 1 : //waiting for a line with CRLF
received=(char *)0;
got=tcp_getline(socptr,WAITLINE,&received);
- (void) rou_alert(0,"%s, received=<%s>",OPEP,received);
+ (void) rou_alert(3,"%s, received=<%s>",OPEP,received);
switch (got) {
case 0 : //Reading timeout
(void) rou_alert(0,"Unable to receive line in due time");
status=true;
phase=0;
proceed=true;
-(void) rou_alert(0,"%s line=<%s>",OPEP,line);
+(void) rou_alert(3,"%s line=<%s>",OPEP,line);
while (proceed==true) {
switch (phase) {
case 0 : //removing first space
status=-2;
soc=(SOCTYP *)socptr;
if ((soc!=(SOCTYP *)0)&&(isconnected(soc)==true)) {
- struct pollfd polling[1];
-
- polling[0].events=POLLIN|POLLPRI|POLLHUP;
- polling[0].revents=(short)0;
switch (soc->modtls) {
case true :
- (void) rou_alert(0,"%s JMPDBG Waiting TLS",OPEP);
status=tls_waitforchar(soc->tls,millisec);
break;
- case false :
+ case false : {
+ struct pollfd polling[1];
+
+ polling[0].events=POLLIN|POLLPRI|POLLHUP;
+ polling[0].revents=(short)0;
polling[0].fd=soc->handle;
(void) sigprocmask(SIG_SETMASK,(sigset_t *)0,&origmask);
status=poll(polling,1,millisec);
(void) sigprocmask(SIG_SETMASK,&origmask,(sigset_t *)0);
+ }
break;
}
switch (status) {
case -1 : //polling error
- (void) rou_alert(0,"%s JMPDBG Poll error=<%s>",OPEP,strerror(errno));
break;
case 0 : //polling timeout
- (void) rou_alert(0,"%s JMPDBG Polling timeout",OPEP);
break;
case 1 : //polling early return (data or event)
- (void) rou_alert(0,"%s JMPDBG Polling return",OPEP);
break;
default :
break;
if (errno==EWOULDBLOCK)
errno=EAGAIN;
switch (errno) {
- case EAGAIN : //no char available yet
- got=0; //lets report "no char"
+ case ITSOK : //SSL report (wrong) error?
+ case EAGAIN : //no char available yet
+ got=0; //lets report "no char"
break;
- case ECONNRESET : //Connection reset by peer
+ case ECONNRESET : //Connection reset by peer
(void) rou_alert(0,"%s connection reset by peer",OPEP);
break;
- default :
+ default :
(void) rou_alert(0,"%s Unexpected error=%d <%s> (Bug)",
OPEP,errno,strerror(errno));
break;
switch (soc_starttls(contact->socptr,true,srvr_certs)) {
case true : //link now in TLS crypted mode
(void) transmit(contact,"%d Link now encrypted",CMDOK);
- (void) rou_alert(0,"%s, CMDOK sent",OPEP);
break;
case false : //unable to establish link
(void) transmit(contact,"%d 5.3.3 command starttls not successful",
QUITOK,contact->mainsesid);
status=-1; //remote is a trouble maker
proceed=false;
- (void) rou_alert(0,"%s JMPDBG should ho out",OPEP);
break;
default :
(void) rou_alert(0,"Unable to find keyword for <%s> (Bug?)",OPEP,line);
#include <time.h>
-#define APPNAME "mailleur" //application name
+#define APPNAME "mailleur" //application name
#define PUBLIC //to specify public variable
+#define ITSOK 0 //to check errno against no error
+
typedef void (*freehandler_t)(void *);
typedef struct timespec TIMESPEC;
case 3 : //Setting the TLS channel actif
switch (server) {
case false : //mode client
- (void) rou_alert(0,"%s JMPDBG should be in client mode",OPEP);
if (tls_connect(tls)<0)
phase=999; //trouble trouble
break;
break;
}
break;
- case 0 : //no char sent
+ case 0 : //no char received
switch (SSL_get_error(tls->ssl,0)) {
+ case SSL_ERROR_ZERO_RETURN : //No char available on link
case SSL_ERROR_SYSCALL : //EOF received?
tls->goteof=true;
if (ERR_get_error()!=0)
peer=(X509 *)0;
tic=30; //30 second MAX to extablish SSL connexio
done=false;
-(void) rou_alert(0,"%s JMPDBG in tls_accept",OPEP);
if ((tls->bio=BIO_new_fd(tls->handle,BIO_NOCLOSE))==(BIO *)0) {
(void) rou_core_dump("%s Unable to get the BIO (error=<%s>)",
OPEP,strerror(errno));
switch (sslerr=SSL_get_error(tls->ssl,statut)) {
case SSL_ERROR_NONE :
statut=0;
- (void) rou_alert(0,"%s JMPDBG ask for Peer",OPEP);
if ((peer=SSL_get_peer_certificate(tls->ssl))!=(X509 *)0) {
- (void) rou_alert(0,"%s JMPDBG Got Peer",OPEP);
if (SSL_get_verify_result(tls->ssl)!=X509_V_OK)
statut=-1;
(void) X509_free(peer);