gnunet-svn
[Top][All Lists]
Advanced

[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) 




reply via email to

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