#undef OPEP
}
/*
+\f
+*/
+/********************************************************/
+/* */
+/* Procedure to close an exchange socket sonnected */
+/* server. Return a so remote smtp server. */
+/* */
+/********************************************************/
+PUBLIC SOCPTR *soc_closeonesock(SOCPTR *socptr)
+
+{
+#define OPEP "devsoc.c:soc_closeonesoc"
+
+SOCTYP *soc;
+int phase;
+_Bool proceed;
+
+soc=(SOCTYP *)socptr;
+phase=0;
+proceed=true;
+while (proceed==true) {
+ switch (phase) {
+ case 0 : //Do we have an opened socket
+ if (soc==(SOCTYP *)0) {
+ (void) rou_alert(0,"%s, Aborting, socket is null (bug?)",OPEP);
+ phase=999; //no need to go further
+ }
+ break;
+ case 1 : //let close the socket
+ if (close(soc->handle)<0) {
+ (void) rou_alert(0,"%s, error on closing socket '%s.%s' (error=<%s>)",
+ OPEP,soc->ip,soc->port,strerror(errno));
+ }
+ socptr=freesocket(socptr);
+ break;
+ default : //SAFE Guard
+ proceed=false;
+ break;
+ }
+ phase++;
+ }
+return socptr;
+#undef OPEP
+}
+/*
^L
*/
/********************************************************/
//to connect a remote smtp server
extern SOCPTR *soc_openonesock(PROTYP proto,const char *ip,const char *port);
-//procedure to cloe and exchange socket connected to a remote smtp server
+//procedure to close an exchange socket connected to a remote smtp server
extern SOCPTR *soc_closeonesock(SOCPTR *socptr);
//procedure to return the number of channel to open on the soc