[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r5211 - GNUnet/src/server
From: |
gnunet |
Subject: |
[GNUnet-SVN] r5211 - GNUnet/src/server |
Date: |
Sun, 1 Jul 2007 19:14:04 -0600 (MDT) |
Author: grothoff
Date: 2007-07-01 19:14:03 -0600 (Sun, 01 Jul 2007)
New Revision: 5211
Modified:
GNUnet/src/server/handler.c
Log:
fix
Modified: GNUnet/src/server/handler.c
===================================================================
--- GNUnet/src/server/handler.c 2007-07-02 00:57:15 UTC (rev 5210)
+++ GNUnet/src/server/handler.c 2007-07-02 01:14:03 UTC (rev 5211)
@@ -74,8 +74,6 @@
static int bq_firstFree_;
-static int bq_lastFree_;
-
static int bq_firstFull_;
static int threads_running = NO;
@@ -574,12 +572,10 @@
if (mainShutdownSignal != NULL)
break;
MUTEX_LOCK(globalLock_);
- mp = bufferQueue_[bq_firstFull_++];
- bufferQueue_[bq_lastFree_++] = NULL;
+ mp = bufferQueue_[bq_firstFull_];
+ bufferQueue_[bq_firstFull_++] = NULL;
if (bq_firstFull_ == QUEUE_LENGTH)
bq_firstFull_ = 0;
- if (bq_lastFree_ == QUEUE_LENGTH)
- bq_lastFree_ = 0;
MUTEX_UNLOCK(globalLock_);
/* end of sync */
SEMAPHORE_UP(bufferQueueWrite_);
@@ -602,17 +598,17 @@
* (receive implementation).
*/
void core_receive(P2P_PACKET * mp) {
- if ( (threads_running == NO) ||
- (mainShutdownSignal != NULL) ||
- (SYSERR == SEMAPHORE_DOWN(bufferQueueWrite_, NO)) ) {
- /* discard message, buffer is full or
- we're shut down! */
- GE_LOG(ectx,
- GE_DEBUG | GE_DEVELOPER | GE_REQUEST,
- "Discarding message of size %u -- buffer full!\n",
- mp->size);
+ if ( (mp->tsession != NULL) &&
+ (0 != memcmp(&mp->sender,
+ &mp->tsession->peer,
+ sizeof(PeerIdentity))) ) {
+ GE_BREAK(NULL, 0);
FREE(mp->msg);
FREE(mp);
+ return;
+ }
+ if ( (threads_running == NO) ||
+ (mainShutdownSignal != NULL) ) {
#if TRACK_DISCARD
if (globalLock_ != NULL)
MUTEX_LOCK(globalLock_);
@@ -628,7 +624,6 @@
if (globalLock_ != NULL)
MUTEX_UNLOCK(globalLock_);
#endif
- return;
}
/* check for blacklisting */
if (YES == identity->isBlacklistedStrict(&mp->sender)) {
@@ -658,16 +653,34 @@
FREE(mp);
return;
}
- if ( (mp->tsession != NULL) &&
- (0 != memcmp(&mp->sender,
- &mp->tsession->peer,
- sizeof(PeerIdentity))) ) {
- GE_BREAK(NULL, 0);
+ if ( (threads_running == NO) ||
+ (mainShutdownSignal != NULL) ||
+ (SYSERR == SEMAPHORE_DOWN(bufferQueueWrite_, NO)) ) {
+ /* discard message, buffer is full or
+ we're shut down! */
+ GE_LOG(ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_REQUEST,
+ "Discarding message of size %u -- buffer full!\n",
+ mp->size);
FREE(mp->msg);
FREE(mp);
+#if TRACK_DISCARD
+ if (globalLock_ != NULL)
+ MUTEX_LOCK(globalLock_);
+ discarded++;
+ if (0 == discarded % 64)
+ GE_LOG(ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_REQUEST,
+ "Accepted: %u discarded: %u blacklisted: %u, ratio: %f\n",
+ accepted,
+ discarded,
+ blacklisted,
+ 1.0 * accepted / (blacklisted + discarded + 1));
+ if (globalLock_ != NULL)
+ MUTEX_UNLOCK(globalLock_);
+#endif
return;
}
-
/* try to increment session reference count */
if (SYSERR == transport->associate(mp->tsession))
mp->tsession = NULL;
@@ -701,7 +714,6 @@
for (i=0;i<QUEUE_LENGTH;i++)
bufferQueue_[i] = NULL;
bq_firstFree_ = 0;
- bq_lastFree_ = 0;
bq_firstFull_ = 0;
/* create message handling threads */
@@ -768,9 +780,8 @@
SEMAPHORE_DESTROY(bufferQueueWrite_);
bufferQueueWrite_ = NULL;
for (i=0;i<QUEUE_LENGTH;i++) {
- if (bufferQueue_[i] != NULL) {
- FREENONNULL(bufferQueue_[i]->msg);
- }
+ if (bufferQueue_[i] != NULL)
+ FREENONNULL(bufferQueue_[i]->msg);
FREENONNULL(bufferQueue_[i]);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r5211 - GNUnet/src/server,
gnunet <=