[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r10231 - gnunet/src/core
From: |
gnunet |
Subject: |
[GNUnet-SVN] r10231 - gnunet/src/core |
Date: |
Fri, 5 Feb 2010 17:48:26 +0100 |
Author: grothoff
Date: 2010-02-05 17:48:26 +0100 (Fri, 05 Feb 2010)
New Revision: 10231
Modified:
gnunet/src/core/gnunet-service-core.c
Log:
fixes
Modified: gnunet/src/core/gnunet-service-core.c
===================================================================
--- gnunet/src/core/gnunet-service-core.c 2010-02-05 15:48:14 UTC (rev
10230)
+++ gnunet/src/core/gnunet-service-core.c 2010-02-05 16:48:26 UTC (rev
10231)
@@ -41,6 +41,8 @@
#include "core.h"
+#define DEBUG_HANDSHAKE 1
+
/**
* Receive and send buffer windows grow over time. For
* how long can 'unused' bandwidth accumulate before we
@@ -319,8 +321,15 @@
* Was this message selected for transmission in the
* current round? GNUNET_YES or GNUNET_NO.
*/
- int16_t do_transmit;
+ int8_t do_transmit;
+ /**
+ * Did we give this message some slack (delayed sending) previously
+ * (and hence should not give it any more slack)? GNUNET_YES or
+ * GNUNET_NO.
+ */
+ int8_t got_slack;
+
};
@@ -1011,6 +1020,10 @@
ret = m->size;
n->available_send_window -= m->size;
process_encrypted_neighbour_queue (n);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Copied message of type %u and size %u into transport buffer
for `%4s'\n",
+ ntohs (((struct GNUNET_MessageHeader *) &m[1])->type),
+ ret, GNUNET_i2s (&n->peer));
#if DEBUG_CORE
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Copied message of type %u and size %u into transport buffer
for `%4s'\n",
@@ -1268,13 +1281,20 @@
and relative deadlines caused by other messages
with their respective load */
slack = GNUNET_MIN (slack, avail / n->bpm_out);
- if (pos->deadline.value < now.value)
- slack = 0;
+ if ( (pos->deadline.value < now.value) ||
+ (GNUNET_YES == pos->got_slack) )
+ {
+ slack = 0;
+ }
else
- slack =
- GNUNET_MIN (slack, pos->deadline.value - now.value);
+ {
+ slack =
+ GNUNET_MIN (slack, pos->deadline.value - now.value);
+ pos->got_slack = GNUNET_YES;
+ }
}
}
+
off += pos->size;
t.value = GNUNET_MAX (pos->deadline.value, t.value);
if (pos->priority <= min_prio)
@@ -1297,16 +1317,21 @@
urgent deadlines */
if ( (slack > 1000) && (size > 4 * off) )
{
- /* less than 25% of message would be filled with
- deadlines still being met if we delay by one
- second or more; so just wait for more data */
- retry_time->value = slack / 2;
+ /* less than 25% of message would be filled with deadlines still
+ being met if we delay by one second or more; so just wait for
+ more data; but do not wait longer than 1s (since we don't want
+ to delay messages for a really long time either). */
+ retry_time->value = 1000;
/* reset do_transmit values for next time */
while (pos != last)
{
- pos->do_transmit = GNUNET_NO;
+ pos->do_transmit = GNUNET_NO;
pos = pos->next;
}
+#if DEBUG_CORE
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Deferring transmission for 1s due to underfull message
buffer size\n");
+#endif
return 0;
}
/* select marked messages (up to size) for transmission */
@@ -1410,6 +1435,11 @@
send_to_all_clients (&ntm->header,
GNUNET_YES,
GNUNET_CORE_OPTION_SEND_FULL_OUTBOUND);
+#if DEBUG_HANDSHAKE
+ fprintf (stderr,
+ "Encrypting message of type %u\n",
+ ntohs(((struct GNUNET_MessageHeader*)&pos[1])->type));
+#endif
/* copy for encrypted transmission */
memcpy (&buf[ret], &pos[1], pos->size);
ret += pos->size;
@@ -2338,7 +2368,8 @@
sizeof (struct GNUNET_PeerIdentity)))
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _("Received `%s' message that was not for me. Ignoring.\n"));
+ _("Received `%s' message that was not for me. Ignoring.\n"),
+ "SET_KEY");
return;
}
if ((ntohl (m->purpose.size) !=
@@ -2576,6 +2607,12 @@
int deliver_full;
type = ntohs (m->type);
+#if DEBUG_HANDSHAKE
+ fprintf (stderr,
+ "Received encapsulated message of type %u from `%4s'\n",
+ type,
+ GNUNET_i2s (&sender->peer));
+#endif
cpos = clients;
while (cpos != NULL)
{
@@ -2814,6 +2851,12 @@
up = (n->status == PEER_STATE_KEY_CONFIRMED);
type = ntohs (message->type);
size = ntohs (message->size);
+#if DEBUG_HANDSHAKE
+ fprintf (stderr,
+ "Received message of type %u from `%4s'\n",
+ type,
+ GNUNET_i2s (peer));
+#endif
switch (type)
{
case GNUNET_MESSAGE_TYPE_CORE_SET_KEY:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r10231 - gnunet/src/core,
gnunet <=