aboutsummaryrefslogtreecommitdiff
path: root/src/peerstore
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-05-14 17:06:27 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-05-14 17:06:27 +0000
commit3fd47482d18b111b1dd407258d1eb388df56c21e (patch)
treec58fa83178682ee8abcf01884150a1e04cb262a8 /src/peerstore
parent1eef3106cb6ed367eeaec6c35b2dcc76ef314db6 (diff)
downloadgnunet-3fd47482d18b111b1dd407258d1eb388df56c21e.tar.gz
gnunet-3fd47482d18b111b1dd407258d1eb388df56c21e.zip
added record expiry to sqlite
Diffstat (limited to 'src/peerstore')
-rw-r--r--src/peerstore/gnunet-service-peerstore.c21
-rw-r--r--src/peerstore/plugin_peerstore_sqlite.c19
2 files changed, 17 insertions, 23 deletions
diff --git a/src/peerstore/gnunet-service-peerstore.c b/src/peerstore/gnunet-service-peerstore.c
index 990fa2c88..ad4d68335 100644
--- a/src/peerstore/gnunet-service-peerstore.c
+++ b/src/peerstore/gnunet-service-peerstore.c
@@ -115,21 +115,11 @@ void handle_store (void *cls,
115 GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); 115 GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
116 return; 116 return;
117 } 117 }
118 if(NULL == record->sub_system) 118 if(NULL == record->sub_system
119 || NULL == record->peer
120 || NULL == record->key)
119 { 121 {
120 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Sub system not supplied in client store request\n"); 122 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Full key not supplied in client store request\n");
121 GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
122 return;
123 }
124 if(NULL == record->peer)
125 {
126 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Peer id not supplied in client store request\n");
127 GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
128 return;
129 }
130 if(NULL == record->key)
131 {
132 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Key not supplied in client store request\n");
133 GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); 123 GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
134 return; 124 return;
135 } 125 }
@@ -143,7 +133,8 @@ void handle_store (void *cls,
143 record->peer, 133 record->peer,
144 record->key, 134 record->key,
145 record->value, 135 record->value,
146 record->value_size)) 136 record->value_size,
137 GNUNET_TIME_relative_to_absolute(record->lifetime)))
147 { 138 {
148 response_type = GNUNET_MESSAGE_TYPE_PEERSTORE_STORE_RESULT_OK; 139 response_type = GNUNET_MESSAGE_TYPE_PEERSTORE_STORE_RESULT_OK;
149 } 140 }
diff --git a/src/peerstore/plugin_peerstore_sqlite.c b/src/peerstore/plugin_peerstore_sqlite.c
index 10ab17650..c44914f43 100644
--- a/src/peerstore/plugin_peerstore_sqlite.c
+++ b/src/peerstore/plugin_peerstore_sqlite.c
@@ -208,7 +208,8 @@ peerstore_sqlite_store_record(void *cls,
208 const struct GNUNET_PeerIdentity *peer, 208 const struct GNUNET_PeerIdentity *peer,
209 const char *key, 209 const char *key,
210 const void *value, 210 const void *value,
211 size_t size) 211 size_t size,
212 struct GNUNET_TIME_Absolute expiry)
212{ 213{
213 struct Plugin *plugin = cls; 214 struct Plugin *plugin = cls;
214 sqlite3_stmt *stmt = plugin->insert_peerstoredata; 215 sqlite3_stmt *stmt = plugin->insert_peerstoredata;
@@ -218,7 +219,8 @@ peerstore_sqlite_store_record(void *cls,
218 if(SQLITE_OK != sqlite3_bind_text(stmt, 1, sub_system, strlen(sub_system) + 1, SQLITE_STATIC) 219 if(SQLITE_OK != sqlite3_bind_text(stmt, 1, sub_system, strlen(sub_system) + 1, SQLITE_STATIC)
219 || SQLITE_OK != sqlite3_bind_blob(stmt, 2, peer, sizeof(struct GNUNET_PeerIdentity), SQLITE_STATIC) 220 || SQLITE_OK != sqlite3_bind_blob(stmt, 2, peer, sizeof(struct GNUNET_PeerIdentity), SQLITE_STATIC)
220 || SQLITE_OK != sqlite3_bind_text(stmt, 3, key, strlen(key) + 1, SQLITE_STATIC) 221 || SQLITE_OK != sqlite3_bind_text(stmt, 3, key, strlen(key) + 1, SQLITE_STATIC)
221 || SQLITE_OK != sqlite3_bind_blob(stmt, 4, value, size, SQLITE_STATIC)) 222 || SQLITE_OK != sqlite3_bind_blob(stmt, 4, value, size, SQLITE_STATIC)
223 || SQLITE_OK != sqlite3_bind_int64(stmt, 5, (sqlite3_int64)expiry.abs_value_us))
222 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 224 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
223 "sqlite3_bind"); 225 "sqlite3_bind");
224 else if (SQLITE_DONE != sqlite3_step (stmt)) 226 else if (SQLITE_DONE != sqlite3_step (stmt))
@@ -343,30 +345,31 @@ database_setup (struct Plugin *plugin)
343 " sub_system TEXT NOT NULL,\n" 345 " sub_system TEXT NOT NULL,\n"
344 " peer_id BLOB NOT NULL,\n" 346 " peer_id BLOB NOT NULL,\n"
345 " key TEXT NOT NULL,\n" 347 " key TEXT NOT NULL,\n"
346 " value BLOB NULL" 348 " value BLOB NULL,\n"
349 " expiry INTEGER NOT NULL"
347 ");"); 350 ");");
348 351
349 /* Prepare statements */ 352 /* Prepare statements */
350 353
351 sql_prepare (plugin->dbh, 354 sql_prepare (plugin->dbh,
352 "INSERT INTO peerstoredata (sub_system, peer_id, key, value) VALUES (?,?,?,?);", 355 "INSERT INTO peerstoredata (sub_system, peer_id, key, value, expiry) VALUES (?,?,?,?,?);",
353 &plugin->insert_peerstoredata); 356 &plugin->insert_peerstoredata);
354 sql_prepare(plugin->dbh, 357 sql_prepare(plugin->dbh,
355 "SELECT peer_id, sub_system, value FROM peerstoredata" 358 "SELECT * FROM peerstoredata"
356 " WHERE sub_system = ?", 359 " WHERE sub_system = ?",
357 &plugin->select_peerstoredata); 360 &plugin->select_peerstoredata);
358 sql_prepare(plugin->dbh, 361 sql_prepare(plugin->dbh,
359 "SELECT peer_id, sub_system, value FROM peerstoredata" 362 "SELECT * FROM peerstoredata"
360 " WHERE sub_system = ?" 363 " WHERE sub_system = ?"
361 " AND peer_id = ?", 364 " AND peer_id = ?",
362 &plugin->select_peerstoredata_by_pid); 365 &plugin->select_peerstoredata_by_pid);
363 sql_prepare(plugin->dbh, 366 sql_prepare(plugin->dbh,
364 "SELECT peer_id, sub_system, value FROM peerstoredata" 367 "SELECT * FROM peerstoredata"
365 " WHERE sub_system = ?" 368 " WHERE sub_system = ?"
366 " AND key = ?", 369 " AND key = ?",
367 &plugin->select_peerstoredata_by_key); 370 &plugin->select_peerstoredata_by_key);
368 sql_prepare(plugin->dbh, 371 sql_prepare(plugin->dbh,
369 "SELECT peer_id, sub_system, value FROM peerstoredata" 372 "SELECT * FROM peerstoredata"
370 " WHERE sub_system = ?" 373 " WHERE sub_system = ?"
371 " AND peer_id = ?" 374 " AND peer_id = ?"
372 " AND key = ?", 375 " AND key = ?",