(no commit message)
authorMatthias Wachs <wachs@net.in.tum.de>
Tue, 30 Nov 2010 17:44:36 +0000 (17:44 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Tue, 30 Nov 2010 17:44:36 +0000 (17:44 +0000)
src/transport/gnunet-service-transport.c
src/transport/transport_api.c

index 8b772689424f871171e51e11cbdd309c55339be3..06ee8450c3ba30727db20b89b6057f403929aebc 100644 (file)
@@ -2224,6 +2224,10 @@ notify_clients_connect (const struct GNUNET_PeerIdentity *peer,
   cim.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_CONNECT);
   cim.distance = htonl (distance);
   cim.latency = GNUNET_TIME_relative_hton (latency);
+  cim.ats_count = htonl(0);
+  cim.ats.type  = htonl(0);
+  cim.ats.value = htonl(0);
+  fprintf (stderr,"%lu %u %lu ", sizeof (struct ConnectInfoMessage), ntohl(cim.ats_count), sizeof (struct GNUNET_TRANSPORT_ATS_Information));
   memcpy (&cim.id, peer, sizeof (struct GNUNET_PeerIdentity));
   cpos = clients;
   while (cpos != NULL)
@@ -3445,11 +3449,10 @@ handle_payload_message (const struct GNUNET_MessageHeader *message,
                            GNUNET_NO);
 
   /* transmit message to all clients */
+  fprintf(stderr,"handle_payload_message ats_count %u\n",ats_count);
   im = GNUNET_malloc (sizeof (struct InboundMessage) + ats_count * sizeof(struct GNUNET_TRANSPORT_ATS_Information) + msize);
   im->header.size = htons (sizeof (struct InboundMessage) +  ats_count * sizeof(struct GNUNET_TRANSPORT_ATS_Information) + msize);
   im->header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_RECV);
-  //im->latency = GNUNET_TIME_relative_hton (n->latency);
-  //im->distance = ntohl(n->distance);
   im->peer = n->id;
   im->ats_count = htonl(ats_count);
   /* insert ATS elements */
@@ -3680,14 +3683,17 @@ check_pending_validation (void *cls,
          if (NULL != (prem = n->pre_connect_message_buffer))
            {
              n->pre_connect_message_buffer = NULL;
-             /*
              struct GNUNET_TRANSPORT_ATS_Information * ats = GNUNET_malloc(2 * sizeof(struct GNUNET_TRANSPORT_ATS_Information));
-             ats[0].type = htonl(GNUNET_TRANSPORT_LATENCY_LSB);
-             ats[0].value = htonl(n->latency.rel_value);
-             ats[1].type = htonl(GNUNET_TRANSPORT_DISTANCE);
-             ats[1].value = htonl(n->distance);*/
-             handle_payload_message (prem, n, NULL, 0);
-             //GNUNET_free (ats);
+             ats[0].type = htonl(GNUNET_TRANSPORT_ATS_QUALITY_NET_DELAY);
+             if (n->latency.rel_value <= UINT32_MAX)
+                 ats[0].value = htonl((uint32_t) n->latency.rel_value);
+             else
+                 ats[0].value = htonl(UINT32_MAX);
+             ats[1].type  = htonl(GNUNET_TRANSPORT_ATS_QUALITY_NET_DISTANCE);
+             ats[1].value = htonl(n->distance);
+             //handle_payload_message (prem, n, NULL, 0);
+             handle_payload_message (prem, n, ats, 2);
+             GNUNET_free (ats);
              GNUNET_free (prem);
            }
        }
@@ -4692,6 +4698,7 @@ plugin_env_receive (void *cls, const struct GNUNET_PeerIdentity *peer,
   struct ForeignAddressList *peer_address;
   uint16_t msize;
   struct NeighbourList *n;
+  struct GNUNET_TRANSPORT_ATS_Information * ats;
   struct GNUNET_TIME_Relative ret;
   if (is_blacklisted (peer, plugin))
     return GNUNET_TIME_UNIT_FOREVER_REL;
@@ -4777,8 +4784,17 @@ plugin_env_receive (void *cls, const struct GNUNET_PeerIdentity *peer,
          handle_pong (plugin, message, peer, sender_address, sender_address_len);
          break;
        default:
-         /* FIXME */
-         handle_payload_message (message, n, NULL, 0);
+         ats = GNUNET_malloc(2 * sizeof(struct GNUNET_TRANSPORT_ATS_Information));
+         ats[0].type = htonl(GNUNET_TRANSPORT_ATS_QUALITY_NET_DELAY);
+         if (n->latency.rel_value <= UINT32_MAX)
+                 ats[0].value = htonl((uint32_t) n->latency.rel_value);
+         else
+                 ats[0].value = htonl(UINT32_MAX);
+         ats[1].type  = htonl(GNUNET_TRANSPORT_ATS_QUALITY_NET_DISTANCE);
+         ats[1].value = htonl(n->distance);
+         //handle_payload_message (message, n, NULL, 0);
+         handle_payload_message (message, n, ats, 2);
+         GNUNET_free(ats);
          break;
        }
     }
@@ -4860,6 +4876,9 @@ handle_start (void *cls,
       /* tell new client about all existing connections */
       cim.header.size = htons (sizeof (struct ConnectInfoMessage));
       cim.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_CONNECT);
+      cim.ats_count = htonl(0);
+      cim.ats.type  = htonl(0);
+      cim.ats.value = htonl(0);
       n = neighbours;
       while (n != NULL)
        {
@@ -4868,6 +4887,7 @@ handle_start (void *cls,
              cim.id = n->id;
              cim.latency = GNUNET_TIME_relative_hton (n->latency);
              cim.distance = htonl (n->distance);
+             fprintf (stderr,"%lu %u %lu ", sizeof (struct ConnectInfoMessage), ntohl(cim.ats_count), sizeof (struct GNUNET_TRANSPORT_ATS_Information));
              transmit_to_client (c, &cim.header, GNUNET_NO);
             }
            n = n->next;
index 23f8c71a77008ced20db0fa906e55e07bd786ef1..110dfac41f28fdb34614948545ea55a47539c946 100644 (file)
@@ -1681,13 +1681,12 @@ demultiplexer (void *cls, const struct GNUNET_MessageHeader *msg)
          return;
        }
       fprintf(stderr,"transport_api GNUNET_MESSAGE_TYPE_TRANSPORT_CONNECT ats_count %u\n",ntohl (cim->ats_count));
-      n->is_connected = GNUNET_YES;
+     n->is_connected = GNUNET_YES;
       if (h->nc_cb != NULL)
                  h->nc_cb (h->cls, &n->id,
                    NULL,
                    0);
-
-     /* FIX if (h->nc_cb != NULL)
+     /*  if (h->nc_cb != NULL)
          h->nc_cb (h->cls, &n->id,
                    &(cim->ats), 
                    ntohl (cim->ats_count));*/
@@ -1787,13 +1786,13 @@ demultiplexer (void *cls, const struct GNUNET_MessageHeader *msg)
          return;
        }
       fprintf(stderr,"transport_api GNUNET_MESSAGE_TYPE_TRANSPORT_RECV ats_count %u\n",ntohl (im->ats_count));
-      if (h->rec != NULL)
+    if (h->rec != NULL)
                h->rec (h->cls, &im->peer,
                        imm,
                        NULL,
                        0);
-    /* FIX
-       h->rec (h->cls, &im->peer, 
+
+       /*h->rec (h->cls, &im->peer,
                imm, 
                &im->ats, 
                ntohl (im->ats_count));*/