From c492c70cee904e72a1d207e1d5c98c494b9f3ac6 Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Sun, 14 Jul 2024 21:08:08 -0400 Subject: [PATCH] able to send data on a mullisten channel --- lib/gestcp.c | 40 ++++++++++++++++++++++++++++++++++++++++ lib/modrec.c | 10 +++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/lib/gestcp.c b/lib/gestcp.c index 39fb9d9..20cbe2e 100644 --- a/lib/gestcp.c +++ b/lib/gestcp.c @@ -188,6 +188,7 @@ while (proceed==true) { (void) dprintf(contact->channel,"JMPDBG Bingo!\n"); break; default : //SAFE guard + proceed=false; break; } phase++; @@ -207,7 +208,46 @@ return contact; PUBLIC CONTYP *tcp_dropcontact(CONTYP *contact) { +#define OPEP "gestcp.c:tcp_dropcontact" + +int phase; +_Bool proceed; + +phase=0; +proceed=true; +while (proceed==true) { + switch (phase){ + case 0 : //check for binding + if (contact==(CONTYP *)0) { + (void) rou_alert(0,"%s Contact pointer is NULL (Bug!?)",OPEP); + phase=999; //not going further + } + break; + case 1 : //waiting from contact + if (shutdown(contact->channel,SHUT_RDWR)<0) { + switch (errno) { + case ENOTCONN : //already disconnect by other side! + break; + default : + (void) rou_alert(0,"%s unable to shutdown (errno=<%s>)", + OPEP,strerror(errno)); + break; + } + } + (void) close(contact->channel); + break; + case 2 : //freeing contact memory + (void) free(contact); + contact=(CONTYP *)0; + break; + default : //SAFE guard + proceed=false; + break; + } + phase++; + } return contact; +#undef OPEP } /* ^L diff --git a/lib/modrec.c b/lib/modrec.c index ad664fa..cca6036 100644 --- a/lib/modrec.c +++ b/lib/modrec.c @@ -47,12 +47,20 @@ while (proceed==true) { } break; case 1 : //do contact - (void) sleep(40); //JMPDBG + for (int i=0;i<20;i++) { + (void) sleep(3); + if ((reload==true)||(hangup==true)) + break; + (void) dprintf(contact->channel,"JMPDBG pid=%d iteration=%d/%d\n", + getpid(),i,20); + + } break; case 2 : //close contact contact=tcp_dropcontact(contact); break; default : //SAFE guard + proceed=false; break; } phase++; -- 2.47.3