gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r5514 - GNUnet/src/server


From: gnunet
Subject: [GNUnet-SVN] r5514 - GNUnet/src/server
Date: Sat, 18 Aug 2007 22:15:26 -0600 (MDT)

Author: grothoff
Date: 2007-08-18 22:15:14 -0600 (Sat, 18 Aug 2007)
New Revision: 5514

Modified:
   GNUnet/src/server/connection.c
Log:
fixing leak from STRICT_STAT_DOWN

Modified: GNUnet/src/server/connection.c
===================================================================
--- GNUnet/src/server/connection.c      2007-08-18 13:01:23 UTC (rev 5513)
+++ GNUnet/src/server/connection.c      2007-08-19 04:15:14 UTC (rev 5514)
@@ -1618,11 +1618,19 @@
       /* transport session is gone! re-establish! */
       tsession = be->session.tsession;
       be->session.tsession = NULL;
-#if STRICT_STAT_DOWN
-      be->status = STAT_DOWN;
-#endif
       transport->disconnect (tsession, __FILE__);
       ensureTransportConnected (be);
+      if (be->session.tsession == NULL) {
+#if STRICT_STAT_DOWN
+       be->status = STAT_DOWN;
+#endif     
+       for (i = 0; i < be->sendBufferSize; i++)
+         {
+           FREENONNULL (be->sendBuffer[i]->closure);
+           FREE (be->sendBuffer[i]);
+         }
+       GROW (be->sendBuffer, be->sendBufferSize, 0);   
+      }
       /* This may have changed the MTU => need to re-do
          everything.  Since we don't want to possibly
          loop forever, give it another shot later;
@@ -1796,6 +1804,12 @@
       be->status = STAT_DOWN;
 #endif
       transport->disconnect (tsession, __FILE__);
+      for (i = 0; i < be->sendBufferSize; i++)
+       {
+         FREENONNULL (be->sendBuffer[i]->closure);
+         FREE (be->sendBuffer[i]);
+       }
+      GROW (be->sendBuffer, be->sendBufferSize, 0);
     }
 
   FREE (encryptedMsg);
@@ -3203,9 +3217,6 @@
       if (ts != NULL)
         {
           be->session.tsession = NULL;
-#if STRICT_STAT_DOWN
-          be->status = STAT_DOWN;
-#endif
           transport->disconnect (ts, __FILE__);
         }
       be->session.tsession = tsession;





reply via email to

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