From: Matthias Wachs Date: Tue, 30 Nov 2010 17:44:36 +0000 (+0000) Subject: (no commit message) X-Git-Tag: initial-import-from-subversion-38251~19577 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=756d8963c980e9284af305fcf8405c2cfabb55c4;p=oweals%2Fgnunet.git --- diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index 8b7726894..06ee8450c 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c @@ -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; diff --git a/src/transport/transport_api.c b/src/transport/transport_api.c index 23f8c71a7..110dfac41 100644 --- a/src/transport/transport_api.c +++ b/src/transport/transport_api.c @@ -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));*/