]> SAFE projects GIT repository - jmp/mailleur/commitdiff
able to send data on a mullisten channel
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 15 Jul 2024 01:08:08 +0000 (21:08 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 15 Jul 2024 01:08:08 +0000 (21:08 -0400)
lib/gestcp.c
lib/modrec.c

index 39fb9d9ced529d73b264bd0b8d18208234ffd4dd..20cbe2e3959e78ac12732c1b2513d57e63a247d2 100644 (file)
@@ -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
index ad664fa2f1a8223494e8e64ac3c35d4ed543881e..cca60364a23d56a5c5e3c5ba8a7ca95ab0a707ab 100644 (file)
@@ -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++;