[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r14935 - in gnunet/src: include mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r14935 - in gnunet/src: include mesh |
Date: |
Fri, 8 Apr 2011 17:46:04 +0200 |
Author: bartpolot
Date: 2011-04-08 17:46:04 +0200 (Fri, 08 Apr 2011)
New Revision: 14935
Modified:
gnunet/src/include/gnunet_protocols.h
gnunet/src/mesh/gnunet-service-mesh.c
gnunet/src/mesh/mesh.h
Log:
Finished an attempt on handle_new_client, changed message types to new API
Modified: gnunet/src/include/gnunet_protocols.h
===================================================================
--- gnunet/src/include/gnunet_protocols.h 2011-04-08 13:35:10 UTC (rev
14934)
+++ gnunet/src/include/gnunet_protocols.h 2011-04-08 15:46:04 UTC (rev
14935)
@@ -799,19 +799,22 @@
#define GNUNET_MESSAGE_TYPE_MESH_SPEED_NOTIFY 262
/* FIXME: Document */
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT 272
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ANY 273
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ALL 274
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD 275
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL 276
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE 277
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL 278
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TRANSMIT_READY 279
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATED 280
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_DESTROYED 281
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA 282
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST 283
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT 272
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATE 273
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_DESTROY 274
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD 275
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL 276
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE 277
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL 278
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_CONNECTED 279
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_DISCONNECTED 280
+
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_REQUEST_TRANSMIT_READY 281
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_NOTIFY_TRANSMIT_READY 282
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA 283
+#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST 284
+
/**
* 640kb should be enough for everybody
*/
Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c 2011-04-08 13:35:10 UTC (rev
14934)
+++ gnunet/src/mesh/gnunet-service-mesh.c 2011-04-08 15:46:04 UTC (rev
14935)
@@ -542,32 +542,39 @@
{
struct Client *c;
unsigned int payload_size;
+// FIXME: is this needed? should we delete the GNUNET_MESH_Connect struct?
// struct GNUNET_MESH_Connect *connect_msg;
//
// connect_msg = (struct GNUNET_MESH_Connect *) message;
+
+ /* FIXME: is this a good idea? */
+ GNUNET_assert(GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT == message->type);
- /* FIXME: check if already exists? NO (optimization) */
+ /* Check data sanity */
payload_size = message->size - sizeof(struct GNUNET_MessageHeader);
- /* FIXME: is this way correct? NO */
- GNUNET_assert(0 == payload_size % sizeof(GNUNET_MESH_ApplicationType));
- /* GNUNET_break */
- /* notify done with syserr */
- /* return */
+ if (0 != payload_size % sizeof(GNUNET_MESH_ApplicationType)) {
+ GNUNET_break(0);
+ GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
+ return;
+ }
+
/* Create new client structure */
-
c = GNUNET_malloc(sizeof(struct Client));
c->handle = client;
c->tunnels_head = NULL;
c->tunnels_tail = NULL;
+ if(payload_size != 0) {
+ c->messages_subscribed = GNUNET_malloc(payload_size);
+ memcpy(c->messages_subscribed, &message[1], payload_size);
+ } else {
+ c->messages_subscribed = NULL;
+ }
+ c->subscription_counter = payload_size/sizeof(GNUNET_MESH_ApplicationType);
- c->messages_subscribed = GNUNET_malloc(payload_size);
- memcpy(c->messages_subscribed, &message[1], payload_size);
- c->subscription_counter = payload_size /
sizeof(GNUNET_MESH_ApplicationType);
-
/* Insert new client in DLL */
GNUNET_CONTAINER_DLL_insert (clients_head, clients_tail, c);
- /* FIXME: notify done */
+ GNUNET_SERVER_receive_done(client, GNUNET_OK);
}
/**
Modified: gnunet/src/mesh/mesh.h
===================================================================
--- gnunet/src/mesh/mesh.h 2011-04-08 13:35:10 UTC (rev 14934)
+++ gnunet/src/mesh/mesh.h 2011-04-08 15:46:04 UTC (rev 14935)
@@ -116,7 +116,7 @@
/**
* Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_[ADD|DEL]
* (client to service, client created tunnel)
- * GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_NOTIFY[CONNECT|DISCONNECT]
+ * GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_[CONNECTED|DISCONNECTED]
* (service to client)
*
* Size: sizeof(struct GNUNET_MESH_PeerControl)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r14935 - in gnunet/src: include mesh,
gnunet <=