SOCTYP *soc;
int status;
int handle;
+int flags;
fd_set rset;
fd_set wset;
struct addrinfo hints;
soc=(SOCTYP *)0;
status=0;
handle=0;
+flags=0;
FD_ZERO(&rset);
FD_ZERO(&wset);
(void) memset(&hints,'\000',sizeof(hints));
phase=999; //no need to go further
}
break;
- case 3 : //connecting to remote
+ case 3 : //getting newhandle flag
+ if ((flags=fcntl(handle,F_GETFL,0))<0) {
+ (void) rou_core_dump("%s, Unable to get socket descripteur on "
+ "IP/PORT <%s/%s> (Bug? error=<%s>)",
+ OPEP,soc->ip,soc->port,strerror(errno));
+ phase=999; //never reached
+ }
+ break;
+ case 4 : //setting newhandle working mode
+ if ((flags=fcntl(handle,F_SETFL,flags|O_NONBLOCK|O_ASYNC))<0) {
+ (void) rou_core_dump("%s, Unable to set socket descripteur on "
+ "IP/PORT <%s/%s> (Bug? error=<%s>)",
+ OPEP,soc->ip,soc->port,strerror(errno));
+ phase=999; //never reached
+ }
+ break;
+ case 5 : //connecting to remote
if (connect(handle,ai->ai_addr,ai->ai_addrlen)<0) {
switch (errno) {
case EINPROGRESS : //its acceptable
}
}
break;
- case 4 : //socket is now ready
+ case 6 : //socket is now ready
soc=newsocket();
soc->proto=proto;
soc->connected=true;
(void) rou_alert(0,"%s Polling timeout millisec='%d'",OPEP,millisec);
break;
case 1 :
- (void) rou_alert(0,"%s Polling return millisec='%d'",OPEP,millisec);
+ (void) rou_alert(0,"%s Polling return millisec='%d' revent='%08x",
+ OPEP,millisec,polling[0].revents);
//(void) usleep(500000);
status=soc_receive(socptr);
+ (void) rou_alert(0,"%s JMPDBG recv status='%d'",OPEP,
+ recv(soc->handle,(char *)0,0,MSG_DONTWAIT|MSG_PEEK));
(void) rou_alert(0,"%s JMPDBG soc_recieve status='%d'",OPEP,status);
/*
limit=(soc->maxcarin-soc->carin);
(void) memset(buffer,'\000',limit);
limit--;
+ errno=0;
switch (soc->modtls) {
case true :
got=tls_read(soc->tls,buffer,limit);
got=recv(soc->handle,buffer,limit,MSG_DONTWAIT);
break;
}
- (void) rou_alert(0,"%s, JMPDBG got=%d char buffer=<%s>",OPEP,got,buffer);
+ (void) rou_alert(0,"%s, JMPDBG got=%d char buffer=<%s> errno='%d'",
+ OPEP,got,buffer,errno);
break;
case 3 : //check about recieved data
switch (got) {