gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r6284 - GNUnet/src/applications/chat


From: gnunet
Subject: [GNUnet-SVN] r6284 - GNUnet/src/applications/chat
Date: Wed, 13 Feb 2008 14:33:01 -0700 (MST)

Author: nevans
Date: 2008-02-13 14:33:01 -0700 (Wed, 13 Feb 2008)
New Revision: 6284

Modified:
   GNUnet/src/applications/chat/clientapi.c
Log:


Modified: GNUnet/src/applications/chat/clientapi.c
===================================================================
--- GNUnet/src/applications/chat/clientapi.c    2008-02-13 21:30:37 UTC (rev 
6283)
+++ GNUnet/src/applications/chat/clientapi.c    2008-02-13 21:33:01 UTC (rev 
6284)
@@ -44,10 +44,14 @@
   struct GNUNET_GC_Configuration *cfg;
 
   char *nickname;
-
+  
   char *room_name;
+  
+  GNUNET_HashCode room_name_hash;
 
   const GNUNET_RSA_PublicKey *my_public_key;
+  
+  GNUNET_HashCode my_public_key_hash;
 
   const struct GNUNET_RSA_PrivateKey *my_private_key;
 
@@ -98,58 +102,84 @@
                        const char *memberInfo,
                        GNUNET_CHAT_MessageCallback callback, void *cls)
 {
-  CS_chat_MESSAGE *chat_msg;
+  CS_chat_JOIN_MESSAGE *join_msg;       
   GNUNET_MessageHeader csHdr;
+  
+  GNUNET_HashCode hash_of_me;
+  GNUNET_HashCode hash_of_room_name;
+  
   struct GNUNET_CHAT_Room *chat_room;
   struct GNUNET_ClientServerConnection *sock;
-
+  
   int ret;
+  int size_of_join;
 
   ret = GNUNET_OK;
-  csHdr.size = htons (sizeof (GNUNET_MessageHeader));
-  csHdr.type = htons (GNUNET_CS_PROTO_CHAT_MSG);
 
-  sock = GNUNET_client_connection_create (ectx, cfg);
-
+  csHdr.size = htons (sizeof (CS_chat_JOIN_MESSAGE));
+  csHdr.type = htons (GNUNET_CS_PROTO_CHAT_JOIN_MSG);
+  
+  sock = GNUNET_client_connection_create(ectx,cfg);
+  
   if (sock == NULL)
-    {
-      fprintf (stderr, _("Error establishing connection with gnunetd.\n"));
-      ret = GNUNET_SYSERR;
-    }
-
-  if (GNUNET_SYSERR == GNUNET_client_connection_write (sock, &csHdr))
-    {
-      fprintf (stderr, _("Error writing to socket.\n"));
-      ret = GNUNET_SYSERR;
-    }
-
-  chat_msg = GNUNET_malloc (sizeof (CS_chat_MESSAGE));
-  GNUNET_free (chat_msg);
-
+  {
+    fprintf (stderr, _("Error establishing connection with gnunetd.\n"));
+    ret = GNUNET_SYSERR;
+  }
+  
   // connect
+  GNUNET_hash (me, sizeof(GNUNET_RSA_PublicKey), &hash_of_me);
+  GNUNET_hash (room_name,strlen(room_name),&hash_of_room_name);
+  
+  size_of_join = sizeof (CS_chat_JOIN_MESSAGE) + strlen(nickname) + 
sizeof(GNUNET_RSA_PublicKey) + strlen(room_name);
+  join_msg = GNUNET_malloc (size_of_join);
+  
+  join_msg->nick_len = htonl(strlen(nickname));
+  join_msg->pubkey_len = htonl(sizeof(GNUNET_RSA_PublicKey));
+  join_msg->room_name_len = htonl(strlen(room_name));
+  
+  
+  memcpy(&join_msg->nick[0],nickname,strlen(nickname));
+  memcpy(&join_msg->nick[strlen(nickname)],me,sizeof(GNUNET_RSA_PublicKey));
+  memcpy(&join_msg->nick[strlen(nickname) + 
sizeof(GNUNET_RSA_PublicKey)],room_name,strlen(room_name));
+  
+  join_msg->header = csHdr;
+  join_msg->header.size = htons(size_of_join);
+  
+  if (GNUNET_SYSERR == GNUNET_client_connection_write (sock, 
&join_msg->header))
+  {
+       fprintf (stderr, _("Error writing to socket.\n"));
+    ret = GNUNET_SYSERR;
+  }
+  
+  GNUNET_free(join_msg);
 
   // allocate & init room struct
-  chat_room = GNUNET_malloc (sizeof (struct GNUNET_CHAT_Room));
-  chat_room->nickname = GNUNET_malloc (sizeof (nickname));
-  strncpy (chat_room->nickname, nickname, sizeof (nickname));
-  chat_room->room_name = GNUNET_malloc (sizeof (room_name));
-  strncpy (chat_room->room_name, room_name, sizeof (room_name));
+  chat_room = GNUNET_malloc(sizeof(struct GNUNET_CHAT_Room));
+  chat_room->nickname = GNUNET_malloc(strlen(nickname)+1);
+  strncpy(chat_room->nickname,nickname,strlen(nickname)+1);
+  
+  chat_room->room_name = GNUNET_malloc(strlen(room_name)+1);
+  strncpy(chat_room->room_name,room_name,strlen(room_name)+1);
+  
+  chat_room->room_name_hash = hash_of_room_name;
   chat_room->my_public_key = me;
+  chat_room->my_public_key_hash = hash_of_me;
   chat_room->my_private_key = key;
   chat_room->callback = callback;
   chat_room->callback_cls = cls;
   chat_room->ectx = ectx;
   chat_room->cfg = cfg;
-  chat_room->memberInfo = GNUNET_malloc (sizeof (memberInfo));
-  strncpy (chat_room->memberInfo, memberInfo, sizeof (memberInfo));
+  chat_room->memberInfo = GNUNET_malloc(strlen(memberInfo)+1);
+  strncpy(chat_room->memberInfo,memberInfo,strlen(memberInfo)+1);
   chat_room->sock = sock;
 
   // create pthread
 
   // return room struct
   if (ret != GNUNET_OK)
-    return NULL;
-
+       return NULL;
+       
   return chat_room;
 }
 
@@ -161,12 +191,12 @@
 {
   // stop thread
   // join thread
-  // free room struct
-
-  GNUNET_free (chat_room->nickname);
-  GNUNET_free (chat_room->memberInfo);
-  GNUNET_client_connection_destroy (chat_room->sock);
-
+  // free room struct  
+  
+  GNUNET_free(chat_room->nickname);
+  GNUNET_free(chat_room->memberInfo);
+  GNUNET_client_connection_destroy(chat_room->sock);
+  
 }
 
 /**
@@ -186,37 +216,33 @@
   int ret = GNUNET_OK;
   GNUNET_MessageHeader cs_msg_hdr;
   CS_chat_MESSAGE *msg_to_send;
-
-
-
-  cs_msg_hdr.size =
-    htons (sizeof (GNUNET_MessageHeader) + sizeof (CS_chat_MESSAGE) +
-           sizeof (room->nickname) + sizeof (message) +
-           sizeof (room->room_name));
+  
+  
+  
+  cs_msg_hdr.size = htons (sizeof (GNUNET_MessageHeader) + 
sizeof(CS_chat_MESSAGE) + strlen(room->nickname) + strlen(message) + 
strlen(room->room_name));
   cs_msg_hdr.type = htons (GNUNET_CS_PROTO_CHAT_MSG);
+  
+  msg_to_send = GNUNET_malloc(ntohl(cs_msg_hdr.size));
+  
+  msg_to_send->nick_len = htonl(strlen(room->nickname));
+  msg_to_send->msg_len = htonl(strlen(message));
+  msg_to_send->room_name_len = htonl(strlen(room->room_name));
+  
+  memcpy(&msg_to_send->nick[0],room->nickname,strlen(room->nickname));
+  memcpy(&msg_to_send->nick[strlen(room->nickname)],message,strlen(message));
+  memcpy(&msg_to_send->nick[strlen(room->nickname) + 
strlen(message)],room->room_name,strlen(room->room_name));
 
-  msg_to_send = GNUNET_malloc (ntohl (cs_msg_hdr.size));
-
-  msg_to_send->nick_len = htonl (sizeof (room->nickname));
-  msg_to_send->msg_len = htonl (sizeof (message));
-  msg_to_send->room_name_len = htonl (sizeof (room->room_name));
-
-  memcpy (&msg_to_send->nick[0], room->nickname, sizeof (room->nickname));
-  memcpy (&msg_to_send->nick[sizeof (room->nickname)], message,
-          sizeof (message));
-  memcpy (&msg_to_send->nick[sizeof (room->nickname) + sizeof (message)],
-          room->room_name, sizeof (room->room_name));
-  /*msg_to_send->message = message;
-     msg_to_send->nick = room->nickname; */
+  /*fprintf(stderr,"sending message ---\n");
+  fprintf(stderr,"nick: 
%s\nmessage:%s\nroom:%s\n",room->nickname,message,room->room_name);*/
+  
   msg_to_send->header = cs_msg_hdr;
+  
+  if (GNUNET_SYSERR == GNUNET_client_connection_write 
(room->sock,&msg_to_send->header))
+  {
+       fprintf (stderr, _("Error writing to socket.\n"));
+    ret = GNUNET_SYSERR;
+  }
 
-  if (GNUNET_SYSERR ==
-      GNUNET_client_connection_write (room->sock, &msg_to_send->header))
-    {
-      fprintf (stderr, _("Error writing to socket.\n"));
-      ret = GNUNET_SYSERR;
-    }
-
   return ret;
 }
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]