if (pid == 0) {
// Child process handles client
- close(server_fd);
+ //close(server_fd);
// Receive data then send response
receiveAndRespond(client_fd);
if (shutdown(contact->channel,SHUT_RDWR)<0) {
switch (errno) {
case ENOTCONN : //already disconnect by other side!
+ (void) rou_alert(0,"%s Already disconnected (errno=<%s>)",
+ OPEP,strerror(errno));
break;
default :
(void) rou_alert(0,"%s unable to shutdown (errno=<%s>)",
- OPEP,strerror(errno));
+ OPEP,strerror(errno));
break;
}
}
(void) usleep(10000);
- //(void) close(contact->channel);
+ (void) close(contact->channel);
break;
case 2 : //freeing contact memory
(void) free(contact);
#define TESTL 4
CONTYP *contact;
+pid_t child;
int phase;
_Bool proceed;
phase=999; //no going further
}
break;
- case 2 : //do contact
+ case 2 : //forking process
+ if ((child=fork())!=(pid_t)0) {
+ (void) close(contact->channel);
+ (void) free(contact);
+ (void) sleep(8);
+ (void) fprintf(stdout,"JMPDBG retart\n");
+ phase=0;
+ }
+ break;
+ case 3 : //do contact
+ (void) close(binding->handle);
for (int i=0;i<TESTL;i++) {
int sent;
char tmpbuf[100];
break;
}
(void) read(contact->channel,tmpbuf,sizeof(tmpbuf));
- (void) sleep(2);
+ (void) sleep(1);
}
break;
- case 3 : //close contact
+ case 4 : //close contact
contact=tcp_dropcontact(contact);
+ (void) exit(0);
break;
default : //SAFE guard
proceed=false;
_Bool proceed;
bindings=(SOCTYP **)0;
-bindings=soc_mkbindinf(bindings,pro_smtp,"127.0.0.25","2525",1);
+bindings=soc_mkbindinf(bindings,pro_smtp,"127.0.0.1","2525",1);
//bindings=soc_mkbindinf(bindings,pro_smtp,"127.0.0.26","2626",1);
phase=0;
proceed=true;
(void) freeaddrinfo(tobind);
break;
case 4 : //listening on socket
- if (listen(binding->handle,binding->iteration)<0) {
+ if (listen(binding->handle,binding->iteration+4)<0) {
(void) rou_alert(0,"%s, Unable to listen at address "
"IP:port '%s:%s' (error='%s')",
binding->ip,binding->port,strerror(errno));
newhandle=-1;
taille=sizeof(struct sockaddr);
-if ((newhandle=accept(binding->handle,addr,&taille))<0) {
+if ((newhandle=accept(binding->handle,NULL,NULL))<0) {
if (errno==EAGAIN)
errno=EWOULDBLOCK;
switch (errno) {