[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r10858 - gnunet/src/hostlist
From: |
gnunet |
Subject: |
[GNUnet-SVN] r10858 - gnunet/src/hostlist |
Date: |
Fri, 9 Apr 2010 14:52:54 +0200 |
Author: wachs
Date: 2010-04-09 14:52:54 +0200 (Fri, 09 Apr 2010)
New Revision: 10858
Modified:
gnunet/src/hostlist/hostlist-server.c
Log:
added code to build the advertisement message
Modified: gnunet/src/hostlist/hostlist-server.c
===================================================================
--- gnunet/src/hostlist/hostlist-server.c 2010-04-09 12:00:16 UTC (rev
10857)
+++ gnunet/src/hostlist/hostlist-server.c 2010-04-09 12:52:54 UTC (rev
10858)
@@ -110,9 +110,10 @@
* Function that assembles our hostlist adv message.
*/
static int
-create_hostlist_adv_message (void)
+create_hostlist_adv_message (struct GNUNET_HOSTLIST_ADV_Message *adv_msg)
{
int length = 0;
+ int size = 0;
unsigned long long port;
char *uri;
@@ -134,8 +135,8 @@
sprintf(port_s, "%llu", port);
length = strlen(hostname)+strlen(protocol)+strlen(port_s)+2;
-
- uri = GNUNET_malloc(length * sizeof(char));
+ size = (length+1) * sizeof (char);
+ uri = GNUNET_malloc(size);
uri = strcpy(uri, protocol);
uri = strcat(uri, hostname);
uri = strcat(uri, ":");
@@ -144,7 +145,30 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Address to obtain hostlist: %s\n", uri);
+ adv_msg = GNUNET_malloc ( sizeof(struct GNUNET_HOSTLIST_ADV_Message) + size);
+ if ( NULL == adv_msg)
+ {
+ GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
+ "Could not allocate memory for the message");
+ return GNUNET_NO;
+ }
+ 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);
+
return GNUNET_OK;
}
@@ -409,8 +433,8 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"A new peer connected to the server, preparing to send hostlist
advertisement\n");
/* create a new advertisement message */
- struct GNUNET_HOSTLIST_ADV_Message *adv_msg =
- create_hostlist_adv_message();
+ struct GNUNET_HOSTLIST_ADV_Message *adv_msg;
+ create_hostlist_adv_message(adv_msg);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r10858 - gnunet/src/hostlist,
gnunet <=