- GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
- "size ADV_Message: %u\n",sizeof(struct GNUNET_HOSTLIST_ADV_Message));
- GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
- "size uri: %u\n", (length + 1) * sizeof (char));
-
-
- if ( ( size + sizeof( struct GNUNET_HOSTLIST_ADV_Message )) > GNUNET_SERVER_MAX_MESSAGE_SIZE)
- {
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
- "Advertisement message is bigger than GNUNET allows");
- return GNUNET_NO;
- }
-
- adv_msg->header.type = htons (GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT);
- adv_msg->header.size = htons (sizeof (struct GNUNET_HOSTLIST_ADV_Message) + size);
- memcpy(&adv_msg[1],uri,size);
-
- /* Request core to transmit message to peer
- adv_transmit_message(peer, size); */
-
- GNUNET_free ( port_s );
- GNUNET_free ( uri );
- GNUNET_free ( adv_msg );
-
- return GNUNET_OK;
+ uri_size = strlen ( hostlist_uri ) + 1;
+ transmission_size = sizeof (struct GNUNET_MessageHeader) + uri_size;
+ header.type = htons (GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT);
+ header.size = htons (transmission_size);
+ GNUNET_assert (size >= transmission_size);
+ memcpy (buf, &header, sizeof (struct GNUNET_MessageHeader));
+ cbuf = buf;
+ memcpy (&cbuf[sizeof (struct GNUNET_MessageHeader)],
+ hostlist_uri, uri_size);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Sent advertisement message: Copied %u bytes into buffer!\n",
+ (unsigned int) transmission_size);
+ hostlist_adv_count++;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ " # Sent advertisement message: %u\n",
+ hostlist_adv_count);
+ GNUNET_STATISTICS_update (stats,
+ gettext_noop("# hostlist advertisements send"),
+ 1,
+ GNUNET_NO);
+ return transmission_size;