-fix logging, revert to break instead of assert
[oweals/gnunet.git] / src / core / gnunet-service-core_sessions.c
index 108fd47cfa0379f7a73baf472139135968d94f62..054ad97f4fe79ea886835ad78d1ee71c5176dec7 100644 (file)
@@ -171,14 +171,13 @@ GSC_SESSIONS_end (const struct GNUNET_PeerIdentity *pid)
 {
   struct Session *session;
   struct GSC_ClientActiveRequest *car;
+  struct SessionMessageEntry *sme;
 
   session = find_session (pid);
   if (NULL == session)
     return;
-#if DEBUG_CORE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Destroying session for peer `%4s'\n",
               GNUNET_i2s (&session->peer));
-#endif
   if (GNUNET_SCHEDULER_NO_TASK != session->cork_task)
   {
     GNUNET_SCHEDULER_cancel (session->cork_task);
@@ -190,6 +189,11 @@ GSC_SESSIONS_end (const struct GNUNET_PeerIdentity *pid)
                                  session->active_client_request_tail, car);
     GSC_CLIENTS_reject_request (car);
   }
+  while (NULL != (sme = session->sme_head))
+  {
+    GNUNET_CONTAINER_DLL_remove (session->sme_head, session->sme_tail, sme);
+    GNUNET_free (sme);
+  }
   GNUNET_SCHEDULER_cancel (session->typemap_task);
   GSC_CLIENTS_notify_clients_about_neighbour (&session->peer, NULL,
                                               0 /* FIXME: ATSI */ ,
@@ -199,7 +203,7 @@ GSC_SESSIONS_end (const struct GNUNET_PeerIdentity *pid)
                                                        &session->
                                                        peer.hashPubKey,
                                                        session));
-  GNUNET_STATISTICS_set (GSC_stats, gettext_noop ("# entries in session map"),
+  GNUNET_STATISTICS_set (GSC_stats, gettext_noop ("# peers connected"),
                          GNUNET_CONTAINER_multihashmap_size (sessions),
                          GNUNET_NO);
   GSC_TYPEMAP_destroy (session->tmap);
@@ -249,10 +253,8 @@ GSC_SESSIONS_create (const struct GNUNET_PeerIdentity *peer,
 {
   struct Session *session;
 
-#if DEBUG_CORE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating session for peer `%4s'\n",
               GNUNET_i2s (peer));
-#endif
   session = GNUNET_malloc (sizeof (struct Session));
   session->tmap = GSC_TYPEMAP_create ();
   session->peer = *peer;
@@ -264,7 +266,7 @@ GSC_SESSIONS_create (const struct GNUNET_PeerIdentity *peer,
                  GNUNET_CONTAINER_multihashmap_put (sessions, &peer->hashPubKey,
                                                     session,
                                                     GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
-  GNUNET_STATISTICS_set (GSC_stats, gettext_noop ("# entries in session map"),
+  GNUNET_STATISTICS_set (GSC_stats, gettext_noop ("# peers connected"),
                          GNUNET_CONTAINER_multihashmap_size (sessions),
                          GNUNET_NO);
   GSC_CLIENTS_notify_clients_about_neighbour (peer, NULL, 0 /* FIXME: ATSI */ ,
@@ -335,17 +337,9 @@ GSC_SESSIONS_queue_request (struct GSC_ClientActiveRequest *car)
   session = find_session (&car->target);
   if (session == NULL)
   {
-    /* neighbour must have disconnected since request was issued,
-     * ignore (client will realize it once it processes the
-     * disconnect notification) */
-#if DEBUG_CORE
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Dropped client request for transmission (am disconnected)\n");
-#endif
-    GNUNET_STATISTICS_update (GSC_stats,
-                              gettext_noop
-                              ("# send requests dropped (disconnected)"), 1,
-                              GNUNET_NO);
+    GNUNET_break (0);           /* should have been rejected earlier */
     GSC_CLIENTS_reject_request (car);
     return;
   }
@@ -355,10 +349,8 @@ GSC_SESSIONS_queue_request (struct GSC_ClientActiveRequest *car)
     GSC_CLIENTS_reject_request (car);
     return;
   }
-#if DEBUG_CORE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Received client transmission request. queueing\n");
-#endif
   GNUNET_CONTAINER_DLL_insert (session->active_client_request_head,
                                session->active_client_request_tail, car);
   try_transmission (session);
@@ -430,12 +422,15 @@ static void
 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;