[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r33898 - gnunet/src/cadet
From: |
gnunet |
Subject: |
[GNUnet-SVN] r33898 - gnunet/src/cadet |
Date: |
Wed, 2 Jul 2014 21:30:46 +0200 |
Author: bartpolot
Date: 2014-07-02 21:30:45 +0200 (Wed, 02 Jul 2014)
New Revision: 33898
Modified:
gnunet/src/cadet/gnunet-service-cadet_channel.c
Log:
- don't update ACK based on queued and yet undelivered messages
- send ACK upon delivery of queued messages to client
Modified: gnunet/src/cadet/gnunet-service-cadet_channel.c
===================================================================
--- gnunet/src/cadet/gnunet-service-cadet_channel.c 2014-07-02 19:30:44 UTC
(rev 33897)
+++ gnunet/src/cadet/gnunet-service-cadet_channel.c 2014-07-02 19:30:45 UTC
(rev 33898)
@@ -616,22 +616,20 @@
{
struct GNUNET_CADET_Data *msg = (struct GNUNET_CADET_Data *) ©[1];
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- " have %u! now expecting %u\n",
+ LOG (GNUNET_ERROR_TYPE_DEBUG, " have %u! now expecting %u\n",
copy->mid, rel->mid_recv + 1);
send_client_data (ch, msg, fwd);
rel->n_recv--;
rel->mid_recv++;
+ GCCH_send_data_ack (ch, fwd);
GNUNET_CONTAINER_DLL_remove (rel->head_recv, rel->tail_recv, copy);
LOG (GNUNET_ERROR_TYPE_DEBUG, " COPYFREE RECV %p\n", copy);
GNUNET_free (copy);
}
else
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- " reliable && don't have %u, next is %u\n",
- rel->mid_recv,
- copy->mid);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, " reliable && don't have %u, next is %u\n",
+ rel->mid_recv, copy->mid);
if (GNUNET_YES == ch->destroy)
{
/* We don't have the next data piece and the remote peer has closed the
@@ -1028,19 +1026,13 @@
bitfield = msg->futures;
mid = ntohl (msg->mid);
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "!!! free_sent_reliable %u %llX\n",
- mid, bitfield);
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- " rel %p, head %p\n",
- rel, rel->head_sent);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "free_sent_reliable %u %llX\n", mid, bitfield);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, " rel %p, head %p\n", rel, rel->head_sent);
for (i = 0, copy = rel->head_sent;
i < 64 && NULL != copy && 0 != bitfield;
i++)
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- " trying bit %u (mid %u)\n",
- i, mid + i + 1);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, " trying bit %u (mid %u)\n", i, mid + i + 1);
mask = 0x1LL << i;
if (0 == (bitfield & mask))
continue;
@@ -1519,9 +1511,8 @@
uint32_t ack;
if (GNUNET_NO == ch->reliable)
- {
return;
- }
+
rel = fwd ? ch->dest_rel : ch->root_rel;
ack = rel->mid_recv - 1;
LOG (GNUNET_ERROR_TYPE_INFO, "===> DATA_ACK for %u\n", ack);
@@ -1529,34 +1520,27 @@
msg.header.type = htons (GNUNET_MESSAGE_TYPE_CADET_DATA_ACK);
msg.header.size = htons (sizeof (msg));
msg.chid = htonl (ch->gid);
+ msg.mid = htonl (ack);
+
msg.futures = 0;
for (copy = rel->head_recv; NULL != copy; copy = copy->next)
{
if (copy->type != GNUNET_MESSAGE_TYPE_CADET_DATA)
{
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "!! Type %s, expected DATA\n",
+ LOG (GNUNET_ERROR_TYPE_DEBUG, " Type %s, expected DATA\n",
GC_m2s (copy->type));
continue;
}
- if (copy->mid == ack + 1)
- {
- ack++;
- continue;
- }
delta = copy->mid - (ack + 1);
if (63 < delta)
break;
mask = 0x1LL << delta;
msg.futures |= mask;
LOG (GNUNET_ERROR_TYPE_DEBUG,
- " !! setting bit for %u (delta %u) (%llX) -> %llX\n",
+ " setting bit for %u (delta %u) (%llX) -> %llX\n",
copy->mid, delta, mask, msg.futures);
}
- msg.mid = htonl (ack);
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "!!! ACK for %u, futures %llX\n",
- ack, msg.futures);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, " final futures: %llX\n", ack, msg.futures);
GCCH_send_prebuilt_message (&msg.header, ch, !fwd, NULL);
LOG (GNUNET_ERROR_TYPE_DEBUG, "send_data_ack END\n");
@@ -1955,7 +1939,7 @@
/* Is this the exact next expected messasge? */
if (mid == rel->mid_recv)
{
- LOG (GNUNET_ERROR_TYPE_DEBUG, "as expected\n");
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "as expected, sending to client\n");
rel->mid_recv++;
send_client_data (ch, msg, fwd);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r33898 - gnunet/src/cadet,
gnunet <=