#include "portab.h"
-static char UNUSED id[] = "$Id: conn.c,v 1.106 2002/12/18 13:50:22 alex Exp $";
+static char UNUSED id[] = "$Id: conn.c,v 1.106.2.1 2003/03/09 20:16:46 alex Exp $";
#include "imp.h"
#include <assert.h>
assert( Idx > NONE );
assert( My_Connections[Idx].sock > NONE );
+ /* Is this link already shutting down? */
+ if( My_Connections[Idx].options & CONN_ISCLOSING )
+ {
+ /* Conn_Close() has been called recursively for this link;
+ * probabe reason: Try_Write() failed -- see below. */
+ return;
+ }
+
+ /* Mark link as "closing" */
+ My_Connections[Idx].options |= CONN_ISCLOSING;
+
+ /* Search client, if any */
c = Client_GetFromConn( Idx );
if( InformClient )
if( My_Connections[Idx].sock == NONE ) return;
}
- /* zunaechst versuchen, noch im Schreibpuffer vorhandene
- * Daten auf den Socket zu schreiben ... */
- Try_Write( Idx );
+ /* Try to write out the write buffer */
+ (VOID)Try_Write( Idx );
if( close( My_Connections[Idx].sock ) != 0 )
{
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*
- * $Id: conn.h,v 1.26 2002/12/18 13:50:22 alex Exp $
+ * $Id: conn.h,v 1.26.2.1 2003/03/09 20:16:46 alex Exp $
*
* Connection management (header)
*/
#define __conn_h__
-#include <time.h> /* wg. time_t, s.u. */
+#include <time.h> /* fro time_t, see below */
+#define CONN_ISCLOSING 1 /* Conn_Close() already called */
+
#ifdef USE_ZLIB
-#define CONN_ZIP 4 /* Kompression mit zlib */
+#define CONN_ZIP 2 /* zlib compressed link */
#endif