gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r35362 - in gnunet/src: core transport


From: gnunet
Subject: [GNUnet-SVN] r35362 - in gnunet/src: core transport
Date: Sun, 8 Mar 2015 16:56:44 +0100

Author: grothoff
Date: 2015-03-08 16:56:44 +0100 (Sun, 08 Mar 2015)
New Revision: 35362

Modified:
   gnunet/src/core/gnunet-service-core_kx.c
   gnunet/src/core/gnunet-service-core_sessions.c
   gnunet/src/transport/gnunet-service-transport_neighbours.c
Log:
finishing implementation of #3652

Modified: gnunet/src/core/gnunet-service-core_kx.c
===================================================================
--- gnunet/src/core/gnunet-service-core_kx.c    2015-03-08 15:53:05 UTC (rev 
35361)
+++ gnunet/src/core/gnunet-service-core_kx.c    2015-03-08 15:56:44 UTC (rev 
35362)
@@ -1095,7 +1095,7 @@
                             GNUNET_NO);
   GSC_NEIGHBOURS_transmit (&kx->peer,
                            &tp.header,
-                           GNUNET_TIME_UNIT_FOREVER_REL /* FIXME: timeout */ );
+                           kx->set_key_retry_frequency);
 }
 
 
@@ -1378,24 +1378,35 @@
   ph->iv_seed = calculate_seed (kx);
   ph->reserved = 0;
   ph->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
-  memcpy (&ph[1], payload, payload_size);
+  memcpy (&ph[1],
+          payload,
+          payload_size);
 
   em = (struct EncryptedMessage *) cbuf;
   em->header.size = htons (used);
   em->header.type = htons (GNUNET_MESSAGE_TYPE_CORE_ENCRYPTED_MESSAGE);
   em->iv_seed = ph->iv_seed;
-  derive_iv (&iv, &kx->encrypt_key, ph->iv_seed, &kx->peer);
+  derive_iv (&iv,
+             &kx->encrypt_key,
+             ph->iv_seed,
+             &kx->peer);
   GNUNET_assert (GNUNET_OK ==
-                 do_encrypt (kx, &iv, &ph->sequence_number,
+                 do_encrypt (kx,
+                             &iv,
+                             &ph->sequence_number,
                              &em->sequence_number,
                              used - ENCRYPTED_HEADER_SIZE));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Encrypted %u bytes for %s\n",
-              used - ENCRYPTED_HEADER_SIZE, GNUNET_i2s (&kx->peer));
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Encrypted %u bytes for %s\n",
+              used - ENCRYPTED_HEADER_SIZE,
+              GNUNET_i2s (&kx->peer));
   derive_auth_key (&auth_key,
                   &kx->encrypt_key,
                   ph->iv_seed);
-  GNUNET_CRYPTO_hmac (&auth_key, &em->sequence_number,
-                      used - ENCRYPTED_HEADER_SIZE, &em->hmac);
+  GNUNET_CRYPTO_hmac (&auth_key,
+                      &em->sequence_number,
+                      used - ENCRYPTED_HEADER_SIZE,
+                      &em->hmac);
   GSC_NEIGHBOURS_transmit (&kx->peer,
                            &em->header,
                            GNUNET_TIME_UNIT_FOREVER_REL);

Modified: gnunet/src/core/gnunet-service-core_sessions.c
===================================================================
--- gnunet/src/core/gnunet-service-core_sessions.c      2015-03-08 15:53:05 UTC 
(rev 35361)
+++ gnunet/src/core/gnunet-service-core_sessions.c      2015-03-08 15:56:44 UTC 
(rev 35362)
@@ -275,10 +275,13 @@
       GNUNET_SCHEDULER_add_delayed (delay,
                                     &transmit_typemap_task, session);
   GNUNET_STATISTICS_update (GSC_stats,
-                            gettext_noop ("# type map refreshes sent"), 1,
+                            gettext_noop ("# type map refreshes sent"),
+                            1,
                             GNUNET_NO);
   hdr = GSC_TYPEMAP_compute_type_map_message ();
-  GSC_KX_encrypt_and_transmit (session->kxinfo, hdr, ntohs (hdr->size));
+  GSC_KX_encrypt_and_transmit (session->kxinfo,
+                               hdr,
+                               ntohs (hdr->size));
   GNUNET_free (hdr);
 }
 
@@ -761,10 +764,13 @@
     }
     GNUNET_STATISTICS_set (GSC_stats,
                            "# avg payload per encrypted message",
-                           total_bytes / total_msgs, GNUNET_NO);
+                           total_bytes / total_msgs,
+                           GNUNET_NO);
     /* now actually transmit... */
     session->ready_to_transmit = GNUNET_NO;
-    GSC_KX_encrypt_and_transmit (session->kxinfo, pbuf, used);
+    GSC_KX_encrypt_and_transmit (session->kxinfo,
+                                 pbuf,
+                                 used);
   }
 }
 

Modified: gnunet/src/transport/gnunet-service-transport_neighbours.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.c  2015-03-08 
15:53:05 UTC (rev 35361)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.c  2015-03-08 
15:56:44 UTC (rev 35362)
@@ -2500,14 +2500,20 @@
                    GST_ats_is_known (n->primary_address.address,
                                      n->primary_address.session));
   }
-  n->primary_address.bandwidth_in = bandwidth_in;
-  n->primary_address.bandwidth_out = bandwidth_out;
-  GST_neighbours_set_incoming_quota (&address->peer,
-                                     bandwidth_in);
-  bandwidth_min = GNUNET_BANDWIDTH_value_min (bandwidth_out,
-                                              n->neighbour_receive_quota);
-  send_outbound_quota_to_clients (&address->peer,
-                                  bandwidth_min);
+  if (n->primary_address.bandwidth_in.value__ != bandwidth_in.value__)
+  {
+    n->primary_address.bandwidth_in = bandwidth_in;
+    GST_neighbours_set_incoming_quota (&address->peer,
+                                       bandwidth_in);
+  }
+  if (n->primary_address.bandwidth_out.value__ != bandwidth_out.value__)
+  {
+    n->primary_address.bandwidth_out = bandwidth_out;
+    bandwidth_min = GNUNET_BANDWIDTH_value_min (bandwidth_out,
+                                                n->neighbour_receive_quota);
+    send_outbound_quota_to_clients (&address->peer,
+                                    bandwidth_min);
+  }
   return GNUNET_OK;
 }
 
@@ -3569,7 +3575,9 @@
 
 
 /**
- * Change the incoming quota for the given peer.
+ * Change the incoming quota for the given peer.  Updates
+ * our own receive rate and informs the neighbour about
+ * the new quota.
  *
  * @param neighbour identity of peer to change qutoa for
  * @param quota new quota
@@ -3593,7 +3601,21 @@
               ntohl (quota.value__), GNUNET_i2s (&n->id));
   GNUNET_BANDWIDTH_tracker_update_quota (&n->in_tracker, quota);
   if (0 != ntohl (quota.value__))
+  {
+    struct SessionQuotaMessage sqm;
+
+    sqm.header.size = htons (sizeof (struct SessionQuotaMessage));
+    sqm.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_QUOTA);
+    sqm.quota = quota.value__;
+    (void) send_with_session (n,
+                              &sqm,
+                              sizeof (sqm),
+                              UINT32_MAX - 1,
+                              GNUNET_TIME_UNIT_FOREVER_REL,
+                              GNUNET_NO,
+                              NULL, NULL);
     return;
+  }
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Disconnecting peer `%4s' due to SET_QUOTA\n",
               GNUNET_i2s (&n->id));




reply via email to

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