gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r3342 - GNUnet/src/transports


From: grothoff
Subject: [GNUnet-SVN] r3342 - GNUnet/src/transports
Date: Tue, 29 Aug 2006 10:02:46 -0700 (PDT)

Author: grothoff
Date: 2006-08-29 10:02:44 -0700 (Tue, 29 Aug 2006)
New Revision: 3342

Modified:
   GNUnet/src/transports/tcp_helper.c
Log:
fixing unbounded recursion

Modified: GNUnet/src/transports/tcp_helper.c
===================================================================
--- GNUnet/src/transports/tcp_helper.c  2006-08-29 16:23:36 UTC (rev 3341)
+++ GNUnet/src/transports/tcp_helper.c  2006-08-29 17:02:44 UTC (rev 3342)
@@ -93,20 +93,9 @@
 
 static struct MUTEX * tcplock;
 
-/**
- * Disconnect from a remote node. May only be called
- * on sessions that were aquired by the caller first.
- * For the core, aquiration means to call associate or
- * connect. The number of disconnects must match the
- * number of calls to connect+associate.
- *
- * @param tsession the session that is closed
- * @return OK on success, SYSERR if the operation failed
- */
 static int tcpDisconnect(TSession * tsession) {
   TCPSession * tcpsession = tsession->internal;
 
-  GE_ASSERT(ectx, tcpsession != NULL);
   MUTEX_LOCK(tcpsession->lock);
   tcpsession->users--;
   if (tcpsession->users > 0) {
@@ -115,10 +104,6 @@
   }  
   select_disconnect(selector,
                    tcpsession->sock);
-  MUTEX_UNLOCK(tcpsession->lock);
-  MUTEX_DESTROY(tcpsession->lock);
-  FREE(tcpsession);  
-  FREE(tsession);
   return OK;
 }
 
@@ -245,7 +230,13 @@
                                 struct SocketHandle * sock,
                                 void * sock_ctx) {
   TSession * tsession = sock_ctx;
-  tcpDisconnect(tsession);
+  TCPSession * tcpsession = tsession->internal;
+
+  GE_ASSERT(ectx, tcpsession != NULL);
+  MUTEX_UNLOCK(tcpsession->lock);
+  MUTEX_DESTROY(tcpsession->lock);
+  FREE(tcpsession);  
+  FREE(tsession);
 }
 
 /**





reply via email to

[Prev in Thread] Current Thread [Next in Thread]