[Top][All Lists]
[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);
}
/**
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3342 - GNUnet/src/transports,
grothoff <=