gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r10356 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r10356 - gnunet/src/transport
Date: Wed, 17 Feb 2010 23:17:37 +0100

Author: grothoff
Date: 2010-02-17 23:17:37 +0100 (Wed, 17 Feb 2010)
New Revision: 10356

Modified:
   gnunet/src/transport/gnunet-service-transport.c
   gnunet/src/transport/test_transport_api_tcp_peer1.conf
   gnunet/src/transport/test_transport_api_tcp_peer2.conf
   gnunet/src/transport/transport_api.c
Log:
fix state machine update

Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c     2010-02-17 21:48:52 UTC 
(rev 10355)
+++ gnunet/src/transport/gnunet-service-transport.c     2010-02-17 22:17:37 UTC 
(rev 10356)
@@ -1194,9 +1194,6 @@
   /* FIXME: support bi-directional use of TCP */
   if (mq->specific_address == NULL)
     mq->specific_address = find_ready_address(neighbour); 
-  GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
-                              neighbour->messages_tail,
-                              mq);
   if (mq->specific_address == NULL)
     {
       timeout = GNUNET_TIME_absolute_get_remaining (mq->timeout);
@@ -1210,6 +1207,9 @@
 #endif
          if (mq->client != NULL)
            transmit_send_ok (mq->client, neighbour, GNUNET_NO);
+         GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
+                                      neighbour->messages_tail,
+                                      mq);
          GNUNET_free (mq);
          return;               /* nobody ready */ 
        }
@@ -1229,6 +1229,9 @@
 #endif
       return;    
     }
+  GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
+                              neighbour->messages_tail,
+                              mq);
   if (mq->specific_address->connected == GNUNET_NO)
     mq->specific_address->connect_attempts++;
   rl = mq->specific_address->ready_list;

Modified: gnunet/src/transport/test_transport_api_tcp_peer1.conf
===================================================================
--- gnunet/src/transport/test_transport_api_tcp_peer1.conf      2010-02-17 
21:48:52 UTC (rev 10355)
+++ gnunet/src/transport/test_transport_api_tcp_peer1.conf      2010-02-17 
22:17:37 UTC (rev 10356)
@@ -49,7 +49,7 @@
 
 [transport]
 PLUGINS = tcp
-#DEBUG = YES
+DEBUG = YES
 #PREFIX = xterm -T transport2 -e gdb --command=cmd --args
 #PREFIX = valgrind --leak-check=full
 ALLOW_SHUTDOWN = YES

Modified: gnunet/src/transport/test_transport_api_tcp_peer2.conf
===================================================================
--- gnunet/src/transport/test_transport_api_tcp_peer2.conf      2010-02-17 
21:48:52 UTC (rev 10355)
+++ gnunet/src/transport/test_transport_api_tcp_peer2.conf      2010-02-17 
22:17:37 UTC (rev 10356)
@@ -49,8 +49,8 @@
 
 [transport]
 PLUGINS = tcp
-#DEBUG = YES
-PREFIX = 
+DEBUG = YES
+# PREFIX = 
 ALLOW_SHUTDOWN = YES
 ACCEPT_FROM6 = ::1;
 ACCEPT_FROM = 127.0.0.1;

Modified: gnunet/src/transport/transport_api.c
===================================================================
--- gnunet/src/transport/transport_api.c        2010-02-17 21:48:52 UTC (rev 
10355)
+++ gnunet/src/transport/transport_api.c        2010-02-17 22:17:37 UTC (rev 
10356)
@@ -640,6 +640,26 @@
          ret += (mret + sizeof (struct OutboundMessage));
          size -= (mret + sizeof (struct OutboundMessage));
        }
+      else
+       {
+         switch (n->transmit_stage)
+           {
+           case TS_NEW:
+             GNUNET_break (0);
+             break;
+           case TS_QUEUED:
+             GNUNET_break (0);
+             break;
+           case TS_TRANSMITTED:
+             n->transmit_stage = TS_NEW;
+             break;
+           case TS_TRANSMITTED_QUEUED:
+             GNUNET_break (0);
+             break;
+           default:
+             GNUNET_break (0);
+           }
+       }
     }
   schedule_transmission (h);
 #if DEBUG_TRANSPORT
@@ -1565,9 +1585,15 @@
   void *notify_cls;
 
   th->notify_delay_task = GNUNET_SCHEDULER_NO_TASK;
+  n = th->neighbour;
+#if DEBUG_TRANSPORT
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Triggering timeout for request to transmit to `%4s' (%d)\n",
+             GNUNET_i2s (&n->id),
+             n->transmit_stage);
+#endif  
   notify = th->notify;
   notify_cls = th->notify_cls;
-  n = th->neighbour;
   switch (n->transmit_stage)
     {
     case TS_NEW:





reply via email to

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