[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r5570 - GNUnet/src/applications/sqstore_sqlite
From: |
gnunet |
Subject: |
[GNUnet-SVN] r5570 - GNUnet/src/applications/sqstore_sqlite |
Date: |
Wed, 29 Aug 2007 23:35:13 -0600 (MDT) |
Author: grothoff
Date: 2007-08-29 23:35:13 -0600 (Wed, 29 Aug 2007)
New Revision: 5570
Modified:
GNUnet/src/applications/sqstore_sqlite/sqlite.c
Log:
fixing Mantis 1270
Modified: GNUnet/src/applications/sqstore_sqlite/sqlite.c
===================================================================
--- GNUnet/src/applications/sqstore_sqlite/sqlite.c 2007-08-30 03:30:43 UTC
(rev 5569)
+++ GNUnet/src/applications/sqstore_sqlite/sqlite.c 2007-08-30 05:35:13 UTC
(rev 5570)
@@ -386,19 +386,29 @@
dbh = handle->dbh;
if (contentSize < 0)
{
- sqlite3_stmt *stmt;
+ sqlite3_stmt *stmtd;
GE_LOG (ectx,
GE_WARNING | GE_BULK | GE_USER,
_("Invalid data in %s (NCS). Trying to fix (by deletion).\n"),
_("sqlite datastore"));
- sqlite3_reset (stmt);
+ if (1)
+ abort();
+ if (SQLITE_OK != sqlite3_reset (stmt))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK, "sqlite3_reset");
if (sq_prepare (dbh,
- "DELETE FROM gn070 WHERE size < ?", &stmt) == SQLITE_OK)
+ "DELETE FROM gn070 WHERE size < ?", &stmtd) == SQLITE_OK)
{
- sqlite3_bind_int (stmt, 1, sizeof (Datastore_Value));
- sqlite3_step (stmt);
- sqlite3_finalize (stmt);
+ if (SQLITE_OK != sqlite3_bind_int (stmtd, 1, sizeof
(Datastore_Value)))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_bind_int");
+ if (SQLITE_DONE != sqlite3_step (stmtd))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_step");
+ if (SQLITE_OK != sqlite3_finalize (stmtd))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_finalize");
}
else
LOG_SQLITE (handle,
@@ -415,16 +425,26 @@
GE_WARNING | GE_BULK | GE_USER,
_("Invalid data in %s. Trying to fix (by deletion).\n"),
_("sqlite datastore"));
- sqlite3_reset (stmt);
+ if (SQLITE_OK != sqlite3_reset (stmt))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK, "sqlite3_reset");
if (sq_prepare (dbh,
"DELETE FROM gn070 WHERE NOT ((LENGTH(hash) = ?) AND
(size = LENGTH(value) + ?))",
&stmt) == SQLITE_OK)
{
- sqlite3_bind_int (stmt, 1, sizeof (HashCode512));
- sqlite3_bind_int (stmt, 2, sizeof (Datastore_Value));
- sqlite3_step (stmt);
- sqlite3_finalize (stmt);
- }
+ if (SQLITE_OK != sqlite3_bind_int (stmt, 1, sizeof (HashCode512)))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_bind_int");
+ if (SQLITE_OK != sqlite3_bind_int (stmt, 2, sizeof (Datastore_Value)))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_bind_int");
+ if (SQLITE_DONE != sqlite3_step (stmt))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_step");
+ if (SQLITE_OK != sqlite3_finalize (stmt))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_finalize");
+ }
else
LOG_SQLITE (handle,
GE_ERROR | GE_ADMIN | GE_USER | GE_BULK, "sq_prepare");
@@ -681,8 +701,10 @@
if ((ret = sqlite3_step (stmt)) == SQLITE_ROW)
{
datum = assembleDatum (handle, stmt, &key, &rowid);
- sqlite3_reset (stmt);
- if (datum == NULL)
+ if (SQLITE_OK != sqlite3_reset (stmt))
+ LOG_SQLITE (handle,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK,
"sqlite3_reset");
+ if (datum == NULL)
continue;
#if 0
printf ("FOUND %4u prio %4u exp %20llu old: %4u, %20llu\n",
@@ -898,6 +920,8 @@
{
unsigned int idx;
+ if (fn == NULL)
+ return; /* already down */
#if DEBUG_SQLITE
GE_LOG (ectx,
GE_DEBUG | GE_REQUEST | GE_USER, "SQLite: closing database\n");
@@ -1003,8 +1027,15 @@
ret = sqlite3_step (stmt);
if (ret != SQLITE_ROW)
break;
- datum = assembleDatum (handle, stmt, &rkey, &rowid);
- last_rowid = rowid;
+ if (iter == NULL) {
+ count = sqlite3_column_int (stmt, 0);
+ sqlite3_reset (stmt);
+ sqlite3_finalize (stmt);
+ MUTEX_UNLOCK (lock);
+ return count;
+ }
+ datum = assembleDatum (handle, stmt, &rkey, &rowid);
+ last_rowid = rowid;
sqlite3_reset (stmt);
if (datum == NULL)
continue;
@@ -1015,14 +1046,9 @@
FREE (datum);
continue;
}
- if (iter != NULL)
- {
- MUTEX_UNLOCK (lock);
- ret = iter (&rkey, datum, closure, rowid);
- MUTEX_LOCK (lock);
- }
- else
- ret = OK;
+ MUTEX_UNLOCK (lock);
+ ret = iter (&rkey, datum, closure, rowid);
+ MUTEX_LOCK (lock);
if (ret == SYSERR)
{
count = SYSERR;
@@ -1087,13 +1113,22 @@
prio = ntohl (value->prio);
anon = ntohl (value->anonymityLevel);
expir = ntohll (value->expirationTime);
- sqlite3_bind_int (stmt, 1, size);
- sqlite3_bind_int (stmt, 2, type);
- sqlite3_bind_int (stmt, 3, prio);
- sqlite3_bind_int (stmt, 4, anon);
- sqlite3_bind_int64 (stmt, 5, expir);
- sqlite3_bind_blob (stmt, 6, key, sizeof (HashCode512), SQLITE_TRANSIENT);
- sqlite3_bind_blob (stmt, 7, &value[1], contentSize, SQLITE_TRANSIENT);
+ if ( (SQLITE_OK != sqlite3_bind_int (stmt, 1, size)) ||
+ (SQLITE_OK != sqlite3_bind_int (stmt, 2, type)) ||
+ (SQLITE_OK != sqlite3_bind_int (stmt, 3, prio)) ||
+ (SQLITE_OK != sqlite3_bind_int (stmt, 4, anon)) ||
+ (SQLITE_OK != sqlite3_bind_int64 (stmt, 5, expir)) ||
+ (SQLITE_OK != sqlite3_bind_blob (stmt, 6, key, sizeof (HashCode512),
SQLITE_TRANSIENT)) ||
+ (SQLITE_OK != sqlite3_bind_blob (stmt, 7, &value[1], contentSize,
SQLITE_TRANSIENT)) ) {
+ LOG_SQLITE (dbh,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK, "sqlite3_bind_XXXX");
+ if (SQLITE_OK != sqlite3_reset (stmt))
+ LOG_SQLITE (dbh,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK, "sqlite3_reset");
+ MUTEX_UNLOCK (lock);
+ return SYSERR;
+ }
+
n = sqlite3_step (stmt);
if (n != SQLITE_DONE)
{
@@ -1109,7 +1144,9 @@
MUTEX_UNLOCK (lock);
return SYSERR;
}
- sqlite3_reset (stmt);
+ if (SQLITE_OK != sqlite3_reset (stmt))
+ LOG_SQLITE (dbh,
+ GE_ERROR | GE_ADMIN | GE_USER | GE_BULK, "sqlite3_reset");
lastSync++;
payload += getContentDatastoreSize (value);
#if DEBUG_SQLITE
@@ -1190,6 +1227,7 @@
{
GE_BREAK (ectx, 0);
FREE (fn);
+ fn = NULL;
return NULL;
}
@@ -1201,6 +1239,7 @@
GE_ERROR | GE_ADMIN | GE_USER | GE_BULK, "sqlite_payload");
MUTEX_DESTROY (lock);
FREE (fn);
+ fn = NULL;
return NULL;
}
lock = MUTEX_CREATE (NO);
@@ -1278,6 +1317,7 @@
{
MUTEX_DESTROY (lock);
FREE (fn);
+ fn = NULL;
return;
}
createIndices (dbh->dbh);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r5570 - GNUnet/src/applications/sqstore_sqlite,
gnunet <=