gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r33499 - gnunet/src/peerstore


From: gnunet
Subject: [GNUnet-SVN] r33499 - gnunet/src/peerstore
Date: Tue, 3 Jun 2014 17:03:36 +0200

Author: otarabai
Date: 2014-06-03 17:03:36 +0200 (Tue, 03 Jun 2014)
New Revision: 33499

Modified:
   gnunet/src/peerstore/gnunet-service-peerstore.c
   gnunet/src/peerstore/peerstore_common.c
   gnunet/src/peerstore/peerstore_common.h
   gnunet/src/peerstore/plugin_peerstore_sqlite.c
Log:
peerstore: memory leak fixes


Modified: gnunet/src/peerstore/gnunet-service-peerstore.c
===================================================================
--- gnunet/src/peerstore/gnunet-service-peerstore.c     2014-06-03 13:50:37 UTC 
(rev 33498)
+++ gnunet/src/peerstore/gnunet-service-peerstore.c     2014-06-03 15:03:36 UTC 
(rev 33499)
@@ -155,6 +155,7 @@
       record->expiry,
       GNUNET_MESSAGE_TYPE_PEERSTORE_ITERATE_RECORD);
   GNUNET_SERVER_notification_context_unicast(nc, client, (struct 
GNUNET_MessageHeader *)srm, GNUNET_NO);
+  GNUNET_free(srm);
   return GNUNET_YES;
 }
 
@@ -190,6 +191,7 @@
       GNUNET_MESSAGE_TYPE_PEERSTORE_WATCH_RECORD);
   GNUNET_SERVER_notification_context_unicast(nc, client,
       (const struct GNUNET_MessageHeader *)srm, GNUNET_NO);
+  GNUNET_free(srm);
   return GNUNET_YES;
 }
 
@@ -291,12 +293,14 @@
     endmsg->size = htons(sizeof(struct GNUNET_MessageHeader));
     endmsg->type = htons(GNUNET_MESSAGE_TYPE_PEERSTORE_ITERATE_END);
     GNUNET_SERVER_notification_context_unicast(nc, client, endmsg, GNUNET_NO);
+    GNUNET_free(endmsg);
+    GNUNET_SERVER_receive_done(client, GNUNET_OK);
   }
   else
   {
     GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
   }
-  GNUNET_free(record); /* FIXME: destroy record */
+  PEERSTORE_destroy_record(record);
 }
 
 /**
@@ -323,8 +327,8 @@
       || NULL == record->peer
       || NULL == record->key)
   {
-    /* FIXME: Destroy record */
     GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Full key not supplied in client store 
request\n");
+    PEERSTORE_destroy_record(record);
     GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
     return;
   }
@@ -341,13 +345,14 @@
       record->value_size,
       *record->expiry))
   {
-    /* FIXME: Destroy record */
     GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Failed to store requested value, 
sqlite database error.");
+    PEERSTORE_destroy_record(record);
     GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
     return;
   }
   GNUNET_SERVER_receive_done(client, GNUNET_OK);
   watch_notifier(record);
+  PEERSTORE_destroy_record(record);
 }
 
 /**

Modified: gnunet/src/peerstore/peerstore_common.c
===================================================================
--- gnunet/src/peerstore/peerstore_common.c     2014-06-03 13:50:37 UTC (rev 
33498)
+++ gnunet/src/peerstore/peerstore_common.c     2014-06-03 15:03:36 UTC (rev 
33499)
@@ -233,3 +233,26 @@
 
   return record;
 }
+
+/**
+ * Free any memory allocated for this record
+ *
+ * @param record
+ */
+void PEERSTORE_destroy_record(struct GNUNET_PEERSTORE_Record *record)
+{
+  if(NULL != record->sub_system)
+    GNUNET_free(record->sub_system);
+  if(NULL != record->peer)
+    GNUNET_free(record->peer);
+  if(NULL != record->key)
+    GNUNET_free(record->key);
+  if(NULL != record->value)
+  {
+    GNUNET_free(record->value);
+    record->value = 0;
+  }
+  if(NULL != record->expiry)
+    GNUNET_free(record->expiry);
+  GNUNET_free(record);
+}

Modified: gnunet/src/peerstore/peerstore_common.h
===================================================================
--- gnunet/src/peerstore/peerstore_common.h     2014-06-03 13:50:37 UTC (rev 
33498)
+++ gnunet/src/peerstore/peerstore_common.h     2014-06-03 15:03:36 UTC (rev 
33499)
@@ -86,3 +86,10 @@
  */
 struct GNUNET_PEERSTORE_Record *
 PEERSTORE_parse_record_message(const struct GNUNET_MessageHeader *message);
+
+/**
+ * Free any memory allocated for this record
+ *
+ * @param record
+ */
+void PEERSTORE_destroy_record(struct GNUNET_PEERSTORE_Record *record);

Modified: gnunet/src/peerstore/plugin_peerstore_sqlite.c
===================================================================
--- gnunet/src/peerstore/plugin_peerstore_sqlite.c      2014-06-03 13:50:37 UTC 
(rev 33498)
+++ gnunet/src/peerstore/plugin_peerstore_sqlite.c      2014-06-03 15:03:36 UTC 
(rev 33499)
@@ -215,6 +215,8 @@
       iter (iter_cls,
           ret,
           NULL);
+    GNUNET_free(ret->expiry);
+    GNUNET_free(ret);
   }
   if (SQLITE_DONE != sret)
   {




reply via email to

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