[Top][All Lists]
[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;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r6284 - GNUnet/src/applications/chat,
gnunet <=