- papi->address_pretty_printer (papi->cls,
- plugin_name,
- address, address_len,
- numeric,
- rtimeout,
- &transmit_address_to_client, tc);
-}
-
-
-/**
- * Send an address to the client.
- *
- * @param cls our 'struct GNUNET_SERVER_TransmitContext' (for sending)
- * @param public_key public key for the peer, never NULL
- * @param target peer this change is about, never NULL
- * @param valid_until until what time do we consider the address valid?
- * @param validation_block is FOREVER if the address is for an unsupported plugin (from PEERINFO)
- * is ZERO if the address is considered valid (no validation needed)
- * is a time in the future if we're currently denying re-validation
- * @param plugin_name name of the plugin
- * @param plugin_address binary address
- * @param plugin_address_len length of address
- */
-static void
-send_address_to_client (void *cls,
- const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *public_key,
- const struct GNUNET_PeerIdentity *target,
- struct GNUNET_TIME_Absolute valid_until,
- struct GNUNET_TIME_Absolute validation_block,
- const char *plugin_name,
- const void *plugin_address,
- size_t plugin_address_len)
-{
- struct GNUNET_SERVER_TransmitContext *tc = cls;
- char *addr_buf;
-
- /* FIXME: move to a binary format!!! */
- GNUNET_asprintf (&addr_buf, "%s --- %s, %s",
- GST_plugins_a2s (plugin_name,
- plugin_address,
- plugin_address_len),
- (GNUNET_YES == GST_neighbours_test_connected (target))
- ? "CONNECTED"
- : "DISCONNECTED",
- (GNUNET_TIME_absolute_get_remaining (valid_until).rel_value > 0)
- ? "VALIDATED"
- : "UNVALIDATED");
- transmit_address_to_client (tc, addr_buf);
- GNUNET_free (addr_buf);
-}
-
-
-/**
- * Client asked to obtain information about a peer's addresses.
- * Process the request.
- * FIXME: use better name!
- *
- * @param cls unused
- * @param client the client
- * @param message the peer address information request
- */
-static void
-clients_handle_peer_address_lookup (void *cls,
- struct GNUNET_SERVER_Client *client,
- const struct GNUNET_MessageHeader *message)
-{
- const struct PeerAddressLookupMessage *peer_address_lookup;
- struct GNUNET_SERVER_TransmitContext *tc;
-
- peer_address_lookup = (const struct PeerAddressLookupMessage *) message;
- GNUNET_break (ntohl (peer_address_lookup->reserved) == 0);
- tc = GNUNET_SERVER_transmit_context_create (client);
- GST_validation_get_addresses (&peer_address_lookup->peer,
- &send_address_to_client,
- tc);
- GNUNET_SERVER_transmit_context_append_data (tc,
- NULL, 0,
- GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY);
- GNUNET_SERVER_transmit_context_run (tc,
- GNUNET_TIME_UNIT_FOREVER_REL);