gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r18322 - gnunet/src/core


From: gnunet
Subject: [GNUnet-SVN] r18322 - gnunet/src/core
Date: Fri, 25 Nov 2011 17:10:58 +0100

Author: grothoff
Date: 2011-11-25 17:10:58 +0100 (Fri, 25 Nov 2011)
New Revision: 18322

Modified:
   gnunet/src/core/gnunet-service-core_clients.c
   gnunet/src/core/gnunet-service-core_sessions.c
Log:
fixing mantis 1961

Modified: gnunet/src/core/gnunet-service-core_clients.c
===================================================================
--- gnunet/src/core/gnunet-service-core_clients.c       2011-11-25 16:04:36 UTC 
(rev 18321)
+++ gnunet/src/core/gnunet-service-core_clients.c       2011-11-25 16:10:58 UTC 
(rev 18322)
@@ -606,15 +606,24 @@
   struct SendMessageReady smr;
 
   c = car->client_handle;
+  if (GNUNET_YES !=
+      GNUNET_CONTAINER_multihashmap_contains (c->connectmap,
+                                             &car->
+                                             target.hashPubKey))
+  {
+    /* connection has gone down since, drop request */
+    GNUNET_assert (0 !=
+                  memcmp (&car->target, &GSC_my_identity,
+                          sizeof (struct GNUNET_PeerIdentity)));
+    GSC_SESSIONS_dequeue_request (car);
+    GSC_CLIENTS_reject_request (car);
+    return;
+  }
   smr.header.size = htons (sizeof (struct SendMessageReady));
   smr.header.type = htons (GNUNET_MESSAGE_TYPE_CORE_SEND_READY);
   smr.size = htons (car->msize);
   smr.smr_id = car->smr_id;
   smr.peer = car->target;
-  GNUNET_assert (GNUNET_YES ==
-                 GNUNET_CONTAINER_multihashmap_contains (c->connectmap,
-                                                         &car->
-                                                         target.hashPubKey));
   send_to_client (c, &smr.header, GNUNET_NO);
 }
 

Modified: gnunet/src/core/gnunet-service-core_sessions.c
===================================================================
--- gnunet/src/core/gnunet-service-core_sessions.c      2011-11-25 16:04:36 UTC 
(rev 18321)
+++ gnunet/src/core/gnunet-service-core_sessions.c      2011-11-25 16:10:58 UTC 
(rev 18322)
@@ -432,12 +432,15 @@
 solicit_messages (struct Session *session)
 {
   struct GSC_ClientActiveRequest *car;
+  struct GSC_ClientActiveRequest *nxt;
   size_t so_size;
 
   discard_expired_requests (session);
   so_size = 0;
-  for (car = session->active_client_request_head; NULL != car; car = car->next)
+  nxt = session->active_client_request_head;
+  while (NULL != (car = nxt) )
   {
+    nxt = car->next;
     if (so_size + car->msize > GNUNET_CONSTANTS_MAX_ENCRYPTED_MESSAGE_SIZE)
       break;
     so_size += car->msize;




reply via email to

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