gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r27055 - gnunet/src/transport
Date: Tue, 7 May 2013 17:51:54 +0200

Author: wachs
Date: 2013-05-07 17:51:54 +0200 (Tue, 07 May 2013)
New Revision: 27055

Added:
   gnunet/src/transport/test_transport_api_manipulation_cfg_peer1.conf
   gnunet/src/transport/test_transport_api_manipulation_cfg_peer2.conf
Modified:
   gnunet/src/transport/Makefile.am
   gnunet/src/transport/gnunet-service-transport_manipulation.c
Log:
fix for 0002881 + test


Modified: gnunet/src/transport/Makefile.am
===================================================================
--- gnunet/src/transport/Makefile.am    2013-05-07 14:35:46 UTC (rev 27054)
+++ gnunet/src/transport/Makefile.am    2013-05-07 15:51:54 UTC (rev 27055)
@@ -351,6 +351,7 @@
  test_transport_blacklisting_multiple_plugins \
  test_transport_api_manipulation_send_tcp \
  test_transport_api_manipulation_recv_tcp \
+ test_transport_api_manipulation_cfg \
  test_transport_api_reliability_tcp \
  test_transport_api_reliability_tcp_nat \
  test_transport_api_unreliability_udp \
@@ -406,6 +407,7 @@
  test_transport_blacklisting_multiple_plugins \
  test_transport_api_manipulation_send_tcp \
  test_transport_api_manipulation_recv_tcp \
+ test_transport_api_manipulation_cfg \
  test_transport_api_reliability_tcp \
  test_transport_api_reliability_tcp_nat \
  test_transport_api_unreliability_udp \
@@ -677,7 +679,16 @@
  $(top_builddir)/src/util/libgnunetutil.la \
  $(top_builddir)/src/transport/libgnunettransporttesting.la 
 
+test_transport_api_manipulation_cfg_SOURCES = \
+ test_transport_api_manipulation_cfg.c
+test_transport_api_manipulation_cfg_LDADD = \
+ $(top_builddir)/src/transport/libgnunettransport.la \
+ $(top_builddir)/src/hello/libgnunethello.la \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(top_builddir)/src/transport/libgnunettransporttesting.la 
 
+
+
 test_transport_api_reliability_tcp_SOURCES = \
  test_transport_api_reliability.c
 test_transport_api_reliability_tcp_LDADD = \
@@ -1005,6 +1016,8 @@
 test_transport_api_manipulation_send_tcp_peer2.conf\
 test_transport_api_manipulation_recv_tcp_peer1.conf\
 test_transport_api_manipulation_recv_tcp_peer2.conf\
+test_transport_api_manipulation_cfg_peer1.conf\
+test_transport_api_manipulation_cfg_peer2.conf\
 test_transport_api_tcp_nat_peer1.conf\
 test_transport_api_tcp_nat_peer2.conf\
 test_transport_api_tcp_peer1.conf\

Modified: gnunet/src/transport/gnunet-service-transport_manipulation.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_manipulation.c        
2013-05-07 14:35:46 UTC (rev 27054)
+++ gnunet/src/transport/gnunet-service-transport_manipulation.c        
2013-05-07 15:51:54 UTC (rev 27055)
@@ -48,6 +48,7 @@
 struct GST_ManipulationHandle man_handle;
 
 
+
 /**
  * Struct containing information about manipulations to a specific peer
  */
@@ -151,6 +152,11 @@
        struct TM_Peer *tmp;
 
        /**
+        * Peer ID
+        */
+       struct GNUNET_PeerIdentity id;
+
+       /**
         * Absolute time when to send
         */
        struct GNUNET_TIME_Absolute sent_at;
@@ -182,6 +188,14 @@
 };
 
 
+struct DelayQueueEntry *generic_dqe_head;
+struct DelayQueueEntry *generic_dqe_tail;
+
+/**
+ * Task to schedule delayed sendding
+ */
+GNUNET_SCHEDULER_TaskIdentifier generic_send_delay_task;
+
 static void
 set_metric (struct TM_Peer *dest, int direction, uint32_t type, uint32_t value)
 {
@@ -340,17 +354,35 @@
        struct DelayQueueEntry *next;
        struct TM_Peer *tmp = dqe->tmp;
        struct GNUNET_TIME_Relative delay;
-       tmp->send_delay_task = GNUNET_SCHEDULER_NO_TASK;
-       GNUNET_CONTAINER_DLL_remove (tmp->send_head, tmp->send_tail, dqe);
-       GST_neighbours_send (&tmp->peer, dqe->msg, dqe->msg_size, dqe->timeout, 
dqe->cont, dqe->cont_cls);
 
-       next = tmp->send_head;
-       if (NULL != next)
+       if (NULL != tmp)
        {
-                       /* More delayed messages */
-                       delay = GNUNET_TIME_absolute_get_remaining 
(next->sent_at);
-                       tmp->send_delay_task = GNUNET_SCHEDULER_add_delayed 
(delay, &send_delayed, dqe);
+                       tmp->send_delay_task = GNUNET_SCHEDULER_NO_TASK;
+                       GNUNET_CONTAINER_DLL_remove (tmp->send_head, 
tmp->send_tail, dqe);
+                       GST_neighbours_send (&dqe->id, dqe->msg, dqe->msg_size, 
dqe->timeout, dqe->cont, dqe->cont_cls);
+
+                       next = tmp->send_head;
+                       if (NULL != next)
+                       {
+                               /* More delayed messages */
+                               delay = GNUNET_TIME_absolute_get_remaining 
(next->sent_at);
+                               tmp->send_delay_task = 
GNUNET_SCHEDULER_add_delayed (delay, &send_delayed, dqe);
+                       }
        }
+       else
+       {
+               /* Remove from generic queue */
+                       generic_send_delay_task = GNUNET_SCHEDULER_NO_TASK;
+                       GNUNET_CONTAINER_DLL_remove (generic_dqe_head, 
generic_dqe_tail, dqe);
+                       GST_neighbours_send (&dqe->id, dqe->msg, dqe->msg_size, 
dqe->timeout, dqe->cont, dqe->cont_cls);
+                       next = generic_dqe_head;
+                       if (NULL != next)
+                       {
+                               /* More delayed messages */
+                               delay = GNUNET_TIME_absolute_get_remaining 
(next->sent_at);
+                               generic_send_delay_task = 
GNUNET_SCHEDULER_add_delayed (delay, &send_delayed, dqe);
+                       }
+       }
 
        GNUNET_free (dqe);
 }
@@ -384,6 +416,7 @@
                                        /* We have a delay */
                                        delay.rel_value = find_metric(tmp, 
GNUNET_ATS_QUALITY_NET_DELAY, TM_SEND);
                                        dqe = GNUNET_malloc (sizeof (struct 
DelayQueueEntry) + msg_size);
+                                       dqe->id = *target;
                                        dqe->tmp = tmp;
                                        dqe->sent_at = GNUNET_TIME_absolute_add 
(GNUNET_TIME_absolute_get(), delay);
                                        dqe->cont = cont;
@@ -403,7 +436,8 @@
                        /* We have a delay */
                        delay.rel_value = find_metric (&man_handle.general, 
GNUNET_ATS_QUALITY_NET_DELAY, TM_SEND);
                        dqe = GNUNET_malloc (sizeof (struct DelayQueueEntry) + 
msg_size);
-                       dqe->tmp = tmp;
+                       dqe->id = *target;
+                       dqe->tmp = NULL;
                        dqe->sent_at = GNUNET_TIME_absolute_add 
(GNUNET_TIME_absolute_get(), delay);
                        dqe->cont = cont;
                        dqe->cont_cls = cont_cls;
@@ -411,9 +445,9 @@
                        dqe->msg_size = msg_size;
                        dqe->timeout = timeout;
                        memcpy (dqe->msg, msg, msg_size);
-                       GNUNET_CONTAINER_DLL_insert_tail (tmp->send_head, 
tmp->send_tail, dqe);
-                       if (GNUNET_SCHEDULER_NO_TASK == tmp->send_delay_task)
-                               tmp->send_delay_task 
=GNUNET_SCHEDULER_add_delayed (delay, &send_delayed, dqe);
+                       GNUNET_CONTAINER_DLL_insert_tail (generic_dqe_head, 
generic_dqe_tail, dqe);
+                       if (GNUNET_SCHEDULER_NO_TASK == generic_send_delay_task)
+                               generic_send_delay_task = 
GNUNET_SCHEDULER_add_delayed (delay, &send_delayed, dqe);
                        return;
        }
 
@@ -597,9 +631,24 @@
 void
 GST_manipulation_stop ()
 {
+       struct DelayQueueEntry *cur;
+       struct DelayQueueEntry *next;
        GNUNET_CONTAINER_multihashmap_iterate (man_handle.peers, 
&free_tmps,NULL);
+       GNUNET_CONTAINER_multihashmap_destroy (man_handle.peers);
 
-       GNUNET_CONTAINER_multihashmap_destroy (man_handle.peers);
+       next = generic_dqe_head;
+       while (NULL != (cur = next))
+       {
+                       next = cur->next;
+                       GNUNET_CONTAINER_DLL_remove (generic_dqe_head, 
generic_dqe_tail, cur);
+                       GNUNET_free (cur);
+       }
+       if (GNUNET_SCHEDULER_NO_TASK != generic_send_delay_task)
+       {
+                       GNUNET_SCHEDULER_cancel (generic_send_delay_task);
+                       generic_send_delay_task = GNUNET_SCHEDULER_NO_TASK;
+       }
+
        free_metric (&man_handle.general);
        man_handle.peers = NULL;
 }

Added: gnunet/src/transport/test_transport_api_manipulation_cfg_peer1.conf
===================================================================
--- gnunet/src/transport/test_transport_api_manipulation_cfg_peer1.conf         
                (rev 0)
+++ gnunet/src/transport/test_transport_api_manipulation_cfg_peer1.conf 
2013-05-07 15:51:54 UTC (rev 27055)
@@ -0,0 +1,31 @@
address@hidden@ template_cfg_peer1.conf
+[PATHS]
+SERVICEHOME = /tmp/test-transport/api-tcp-p1/
+
+[transport-tcp]
+PORT = 12000
+TIMEOUT = 5 s
+
+[arm]
+PORT = 12005
+DEFAULTSERVICES = transport
+UNIXPATH = /tmp/gnunet-p1-service-arm.sock
+
+[statistics]
+PORT = 12004
+UNIXPATH = /tmp/gnunet-p1-service-statistics.sock
+
+[resolver]
+PORT = 12003
+UNIXPATH = /tmp/gnunet-p1-service-resolver.sock
+
+[peerinfo]
+PORT = 12002
+UNIXPATH = /tmp/gnunet-p1-service-peerinfo.sock
+
+[transport]
+PORT = 12001
+UNIXPATH = /tmp/gnunet-p1-service-transport.sock
+PLUGINS = tcp
+MANIPULATE_DELAY_IN = 100
+MANIPULATE_DELAY_OUT = 100
\ No newline at end of file

Added: gnunet/src/transport/test_transport_api_manipulation_cfg_peer2.conf
===================================================================
--- gnunet/src/transport/test_transport_api_manipulation_cfg_peer2.conf         
                (rev 0)
+++ gnunet/src/transport/test_transport_api_manipulation_cfg_peer2.conf 
2013-05-07 15:51:54 UTC (rev 27055)
@@ -0,0 +1,31 @@
address@hidden@ template_cfg_peer2.conf
+[PATHS]
+SERVICEHOME = /tmp/test-transport/api-tcp-p2/
+
+[transport-tcp]
+PORT = 12015
+TIMEOUT = 5 s
+
+[arm]
+PORT = 12014
+DEFAULTSERVICES = transport
+UNIXPATH = /tmp/gnunet-p2-service-arm.sock
+
+[statistics]
+PORT = 12013
+UNIXPATH = /tmp/gnunet-p2-service-statistics.sock
+
+[resolver]
+PORT = 12012
+UNIXPATH = /tmp/gnunet-p2-service-resolver.sock
+
+[peerinfo]
+PORT = 12011
+UNIXPATH = /tmp/gnunet-p2-service-peerinfo.sock
+
+[transport]
+PORT = 12010
+PLUGINS = tcp
+UNIXPATH = /tmp/gnunet-p2-service-transport.sock
+MANIPULATE_DELAY_IN = 100
+MANIPULATE_DELAY_OUT = 100




reply via email to

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